Comportamento inesperado ao usar phpseclib

Recentemente, tentei implementar a biblioteca phpseclib para fazer login em um servidor SFTP para listar todos os arquivos em um diretório e baixá-los. Depois de baixá-los, mova-os para um diretório diferente no servidor.

Eu não estou tendo muita sorte … Então seguindo o código diretamente de seu site , mas adicionei o registro.

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"); 

Isso resulta no seguinte erro:

 Unable to request pseudo-terminal 

É certo que esta é uma versão antiga, não tenho certeza exatamente qual delas, então pensei que talvez eu devesse atualizar. Depois de puxar a versão mais recente via compositor, e executando o mesmo código acima, não recebo erros, mas recebo isso nos logs:

  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_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 .... 

Alguém tem alguma ideia? Eu também tentei usar a class SFTP, mas falhou com outros problemas “Aviso: conexão fechada prematuramente”.

Obrigado por qualquer ajuda!

Parece que o servidor simplesmente não suporta o exec (). Você pode ter melhor sorte com read () / write ():

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

Quanto ao SFTP … Preciso ver logs para ter alguma idéia.