codecamp

PHP8 ssh2://

ssh2:// — 安全外壳协议 2

说明

ssh2.shell:// ssh2.exec:// ssh2.tunnel:// ssh2.sftp:// ssh2.scp:// (PECL)

注意: 该封装器默认没有激活为了使用 ssh2.*:// 封装协议, 你必须安装来自 » PECL 的 » SSH2 扩展。

除了支持传统的 URI 登录信息,ssh2 封装协议也支持通过 URL 的主机(host)部分来复用打开连接。

用法

  • ssh2.shell://user:pass@example.com:22/xterm
  • ssh2.exec://user:pass@example.com:22/usr/local/bin/somecmd
  • ssh2.tunnel://user:pass@example.com:22/192.168.0.1:14
  • ssh2.sftp://user:pass@example.com:22/path/to/filename

可选项

封装协议概要
属性 ssh2.shell ssh2.exec ssh2.tunnel ssh2.sftp ssh2.scp
受 allow_url_fopen 影响 Yes Yes Yes Yes Yes
允许读取 Yes Yes Yes Yes Yes
允许写入 Yes Yes Yes Yes No
允许追加 No No No Yes(当服务器支持的时候) No
允许同时读和写 Yes Yes Yes Yes No
支持 stat() No No No Yes No
支持 unlink() No No No Yes No
支持 rename() No No No Yes No
支持 mkdir() No No No Yes No
支持 rmdir() No No No Yes No
上下文选项(Context)
名称 用法 默认
session 重复使用预连接的 ssh2 资源  
sftp 重复使用预先分配的 sftp 资源  
methods 密钥交换(key exchange)、主机密钥(hostkey)、cipher、压缩和 MAC 方法  
callbacks    
username 以该用户名连接  
password 使用的密码来进行密码验证  
pubkey_file 用于验证的公钥(public key)文件  
privkey_file 用于验证的私钥(private key)文件  
env 需要设置的环境变量的关联数组  
term 在分配一个 pty 时请求的终端类型  
term_width 在分配一个 pty 时请求的终端宽度  
term_height 在分配一个 pty 时请求的终端宽度高度  
term_units term_width 和 term_height 的单位 SSH2_TERM_UNIT_CHARS

示例

示例 #1 从一个活跃的连接中打开流

<?php
$session = ssh2_connect('example.com', 22);
ssh2_auth_pubkey_file($session, 'username', '/home/username/.ssh/id_rsa.pub',
'/home/username/.ssh/id_rsa', 'secret');
$stream = fopen("ssh2.tunnel://$session/remote.example.com:1234", 'r');
?>

示例 #2 $session 变量必须保持可用!

为了使用 ssh2.*://$session 封装协议, 必须保留 $session 资源变量。下面的代码就不会有预期的效果:

<?php
$session = ssh2_connect('example.com', 22);
ssh2_auth_pubkey_file($session, 'username', '/home/username/.ssh/id_rsa.pub',
'/home/username/.ssh/id_rsa', 'secret');
$connection_string = "ssh2.sftp://$session/";
unset($session);
$stream = fopen($connection_string . "path/to/file", 'r');
?>

unset() 会关闭 session,因为 $connection_string 不保存对 $session 变量的引用,只是源自它的字符串转换。当离开(像函数)作用域隐性调用 unset() 时,也会发生这种情况。


PHP8 phar://
PHP8 rar://
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

PHP8 语言参考

PHP8 函数参考

PHP8 影响 PHP 行为的扩展

PHP8 Componere

PHP8 安装/配置

PHP8 外部函数接口

PHP8 选项和信息

PHP8 选项/信息 函数

PHP8 Windows Cache for PHP

PHP8 WinCache 函数

PHP8 Yac

PHP8 身份认证服务

PHP8 Radius 函数

PHP8 压缩与归档扩展

PHP8 Phar

PHP8 Zip

PHP8 ZipArchive 类

PHP8 加密扩展

PHP8 OpenSSL

PHP8 OpenSSL 函数

PHP8 Sodium 函数

PHP8 数据库扩展

PHP8 针对各数据库系统对应的扩展

PHP8 CUBRID 函数

PHP8 Firebird/InterBase

PHP8 Firebird/InterBase函数

PHP8 MongoDB介绍驱动程序体系结构和特殊功能

PHP8 MongoDB\Driver\Command 类

PHP8 MongoDB\Driver\Query 类

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }