ssh2://

Secure Shell 2

说明

ssh2.shell:// ssh2.exec:// ssh2.tunnel:// ssh2.sftp:// ssh2.scp:// PHP 4.3.0 and up (PECL)

Note: 该封装器默认没有激活
为了使用 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.shellssh2.execssh2.tunnelssh2.sftpssh2.scp
allow_url_fopen 影响YesYesYesYesYes
允许读取YesYesYesYesYes
允许写入YesYesYesYesNo
允许追加NoNoNoYes(当服务器支持的时候)No
允许同时读和写YesYesYesYesNo
支持 statNoNoNoYesNo
支持 unlinkNoNoNoYesNo
支持 renameNoNoNoYesNo
支持 mkdirNoNoNoYesNo
支持 rmdirNoNoNoYesNo
名称用法默认
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_unitsterm_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 This $session variable must be kept available!

In order to use the ssh2.*://$session wrappers you must keep the $session resouce variable. The code below will not have the desired effect:

<?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() closes the session, because $connection_string does not hold a reference to the $session variable, just a string cast derived from it. This also happens when the unset is implicit because of leaving scope (like in a function).