使用 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.com
和 scp ./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');
?>
这是我 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.com
和 scp ./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');
?>