ssh2:// — 安全外殼協(xié)議 2
ssh2.shell:// ssh2.exec:// ssh2.tunnel:// ssh2.sftp:// ssh2.scp:// (PECL)
注意: 該封裝器默認沒有激活
為了使用 ssh2.*:// 封裝協(xié)議, 你必須安裝來自 ? PECL 的 ? SSH2 擴展。
除了支持傳統(tǒng)的 URI 登錄信息,ssh2 封裝協(xié)議也支持通過 URL 的主機(host)部分來復(fù)用打開連接。
示例 #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 封裝協(xié)議, 必須保留 $session 資源變量。下面的代碼就不會有預(yù)期的效果:
<?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() 會關(guān)閉 session,因為 $connection_string 不保存對 $session 變量的引用,只是源自它的字符串轉(zhuǎn)換。當離開(像函數(shù))作用域隱性調(diào)用 unset() 時,也會發(fā)生這種情況。