[英]Unexpected behavior when using phpseclib
我最近尝试实现phpseclib库,以登录到SFTP服务器以列出目录中的所有文件并下载它们。 下载它们后,将它们移动到服务器上的其他目录。
我运气不太好...因此直接从他们的网站跟踪代码,但添加了日志记录。
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类,但由于其他问题“注意:连接过早关闭”而失败。
谢谢你的帮助!
看起来服务器只是不支持exec()
。 使用read()
/ write()
可能会更好一些:
http://phpseclib.sourceforge.net/ssh/examples.html#interactive
至于SFTP ...我需要查看日志以了解任何想法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.