使用 phpseclib ssh 进入服务器时遇到问题

Having trouble using phpseclib to ssh into a server

这是我 upload.php 的代码。我所有的文件都在 MAMP 的 htdocs 目录中。我可以去 url http://localhost:8888/webpage.html 所以我假设 MAMP 正在正常工作。这是我的 upload.php.

代码
<?php 
    set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');
    include('Net/SFTP.php');
    include('Net/SSH2.php');
    //Send file via sftp to server
    echo "begin";

    echo "now connecting...";

    $connection = ssh2_connect('servername.com', 22); //server redacted
    echo "server made\n";
    ssh2_auth_password($connection, 'username', 'password'); //username and password redacted
    echo "connected successfuly\n";

    echo $ssh->exec('pwd');
    echo $ssh->exec('ls -la');
?>

当我提交我的表单并且它被重定向到 upload.php 时,upload.php 显示文本说

begin now connecting...

所以我假设它没有超过这条线

$connection = ssh2_connect('servername.com', 22); //server redacted

但我不明白为什么。

我正在使用 mac。我可以使用 ssh username@servername.comscp ./filename.txt username@servername.com:~/test/ 通过终端 ssh 进入服务器和 scp 文件到它。显然它会提示我输入密码。

也许我输入的服务器名称有误?有谁知道为什么它没有越过那条线?

这就像您混合使用 phpseclib API 和 libssh2 API。比如在哪里定义了 $ssh 变量?您将 ssh2_connect 的结果设置为 $connection 但随后使用从未定义过的 $ssh。

无论如何,试试这个:

<?php 
    set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');
    include('Net/SFTP.php');
    include('Net/SSH2.php');
    //Send file via sftp to server
    echo "begin";

    echo "now connecting...";

    $ssh = new Net_SSH2('servername.com', 22); //server redacted
    echo "server made\n";
    $ssh->login('username', 'password'); //username and password redacted
    echo "connected successfuly\n";

    echo $ssh->exec('pwd');
    echo $ssh->exec('ls -la');
?>