使用phpseclib从远程服务器下载文件

时间:2016-08-09 15:36:28

标签: php ssh sftp phpseclib

我使用phpseclib库中的以下代码登录到远程服务器(远程服务器使用:SFTP - SSH文件传输协议):

<?php
set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');
include('phpseclib/Net/SFTP.php');

$sftp = new Net_SFTP('200.160.163.10');
if (!$sftp->login('username', 'password')) {
    exit('Login Failed');
}
?>

运行上面的代码后,我得到以下消息:

Notice: Error reading channel data in /home/comdinhe/public_html/phpseclib/Net/SSH2.php on line 3480

Notice: Connection closed prematurely in /home/comdinhe/public_html/phpseclib/Net/SSH2.php on line 3500

Login Failed

有谁知道可能会发生什么?

记录:http://pastebin.com/j9M7tZAM

1 个答案:

答案 0 :(得分:1)

我认为 get 方法适用于Net_SFTP。

<?php
set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');
include('phpseclib/Net/SFTP.php');

$sftp = new Net_SFTP('200.160.585.10');
if (!$sftp->login('username', 'password')) {
    exit('Login Failed');
}

echo $sftp->pwd() . "\r\n";
$sftp->get(
    '/sianbima/cbfundo/cbfundo_00000_20160808_171429.txt',
    '/home/comdinhe/public_html/testeArquivo.txt'
);
?>

或者您可以尝试在ssh中执行rsync命令。

$ssh->exec('rsync -avz /sianbima/cbfundo/cbfundo_00000_20160808_171429.txt /home/comdinhe/public_html');