簡體   English   中英

使用phpseclib時發生意外行為

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM