【问题标题】:Unexpected behavior when using phpseclib使用 phpseclib 时的意外行为
【发布时间】:2013-09-26 05:13:57
【问题描述】:

我最近尝试实现 phpseclib 库以登录到 SFTP 服务器以列​​出目录中的所有文件并下载它们。下载后,将它们移动到服务器上的不同目录。

我运气不太好...所以直接按照their site 的代码进行操作,但添加了日志记录。

set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');

require('Net\SSH2.php');
require('Crypt\RSA.php');   

define('NET_SSH2_LOGGING', 2);
$ssh = new Net_SSH2('host_name', 'port');
$key = new Crypt_RSA();
$key->loadKey(file_get_contents('path_to_rsa_file'));
if (!$ssh->login('username', $key)) {
  exit('Login Failed');
}

$ssh->exec("pwd");

这会导致以下错误:

Unable to request pseudo-terminal

诚然,这是一个较旧的版本,我不确定到底是哪一个,所以我想也许我应该更新一下。通过composer拉入最新版本并运行与上面相同的代码后,我没有收到任何错误,但我在日志中得到了这个:

<- NET_SSH2_MSG_USERAUTH_SUCCESS (since last: 0.1395, network: 0.1394s)

-> NET_SSH2_MSG_CHANNEL_OPEN (since last: 0.0006, network: 0.0005s)
00000000  00:00:00:07:73:65:73:73:69:6f:6e:00:00:00:00:7f  ....session.....
00000010  ff:ff:ff:00:00:40:00                             .....@.

<- NET_SSH2_MSG_CHANNEL_OPEN_CONFIRMATION (since last: 0.1232, network: 0.1231s)
00000000  00:00:00:00:00:00:00:00:ff:ff:ff:ff:00:00:80:00  ................

-> NET_SSH2_MSG_CHANNEL_REQUEST (since last: 0.0008, network: 0.0006s)
00000000  00:00:00:00:00:00:00:04:65:78:65:63:01:00:00:00  ........exec....
00000010  03:70:77:64                                      .pwd

<- NET_SSH2_MSG_CHANNEL_FAILURE (since last: 0.123, network: 0.1228s)
00000000  00:00:00:00                                      ....

有人有什么想法吗?我也尝试过使用 SFTP 类,但由于其他问题“注意:连接过早关闭”而失败。

感谢您的帮助!

【问题讨论】:

    标签: php ssh rsa sftp phpseclib


    【解决方案1】:

    看起来服务器不支持exec()read() / write() 你可能会有更好的运气:

    http://phpseclib.sourceforge.net/ssh/examples.html#interactive

    至于 SFTP...我需要查看日志才能有任何想法。

    【讨论】:

    • 谢谢,纽伯特。在我走这条路之前我试过了,但它坏了。我将尝试再次对其进行测试并返回特定错误。是不是因为它无法启动交互式会话。
    • 发布错误会有所帮助。也尝试最新的 Git 版本。最近有一个提交,即使无法请求 PTY,也可以使 read() / write() 工作:github.com/phpseclib/phpseclib/commit/… 据我了解,此提交主要是为了使晦涩的路由器受益,但它可能适用于你也是。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-02
    • 2013-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多