服务器关闭了phpseclib连接?
phpseclib connection closed by server?
我有一个非常简单的 PHP 脚本,它试图从 CENTOS 7 机器连接到 SFTP 服务器。通过 composer 使用 phpseclib。
<?php
require('vendor/autoload.php');
$usr = 'xx';
$pwd = 'xx';
$host = 'sftp.domain.com.au';
$sftp = new SFTP($host);
if($sftp->login($usr, $pwd)){
echo "Connected.";
}else {
echo "Failed";
}
?>
甚至使用了 RSA 密钥
<?php
require('vendor/autoload.php');
$usr = 'xx';
$pwd = 'xx';
$host = 'sftp.domain.com.au';
$sftp = new SFTP($host);
$rsa = new RSA();
$rsa->loadKey(file_get_contents("../../.ssh/id_rsa"));
if($sftp->login($usr, $pwd, $rsa)){
echo "Connected.";
}else {
echo "Failed";
}
?>
上面带有 RSA 的脚本确实有效了几次,并让我连接上了。所以我想我需要了解它为什么有效,并改变一些东西。我尝试生成另一个密钥覆盖现有密钥。但是这次不行了。
我也打开了 NET_SFTP_LOGGING 没有显示错误只是一个普通的 "Connection closed by server"。我已经为此工作了好几天..
我唯一能想到的是,当我重新生成密钥并覆盖 ID_RSA 时,服务器可能认为它不再是正确的密钥了?
另外,当我使用 WinSCP 连接时,似乎 FTP 服务器正在给我一个算法:ssh-rsa 4096、sha256 和 md5 代码。这是我需要在 PHP 脚本中使用才能正确连接的东西吗?只是想排除任何可能性。
更多详情:
- 下班后,我可以通过 FILEZILLA/WINSCP
连接到 FTP 服务器
- CENTOS box 服务器是我们工作网络的一部分。
- 我无法从家里连接到 FTP 服务器。
- 在 CENTOS 机器上,我启用配置了 "ssh_config" 并使用 ssh-kegen -t RSA 生成密钥,我什至将 id_rsa.pub 添加到 authorized_keys
请任何人给我们一些建议,因为这让我耗费了 DAYS 天,希望不是几周!提前致谢。
来自您的代码:
$rsa->loadKey("../../.ssh/id_rsa");
试试这个:
$rsa->loadKey(file_get_contents("../../.ssh/id_rsa"));
此外,
if($sftp->login($usr, $pwd, $rsa)){
您真的想要使用多因素身份验证吗?以我的经验,SSH 服务器设置很少见。更有可能的是你有一个受密码保护的 RSA 私钥,此时你会做更像这样的事情:
$rsa->setPassword($pwd);
$rsa->loadKey(file_get_contents("../../.ssh/id_rsa"));
我有一个非常简单的 PHP 脚本,它试图从 CENTOS 7 机器连接到 SFTP 服务器。通过 composer 使用 phpseclib。
<?php
require('vendor/autoload.php');
$usr = 'xx';
$pwd = 'xx';
$host = 'sftp.domain.com.au';
$sftp = new SFTP($host);
if($sftp->login($usr, $pwd)){
echo "Connected.";
}else {
echo "Failed";
}
?>
甚至使用了 RSA 密钥
<?php
require('vendor/autoload.php');
$usr = 'xx';
$pwd = 'xx';
$host = 'sftp.domain.com.au';
$sftp = new SFTP($host);
$rsa = new RSA();
$rsa->loadKey(file_get_contents("../../.ssh/id_rsa"));
if($sftp->login($usr, $pwd, $rsa)){
echo "Connected.";
}else {
echo "Failed";
}
?>
上面带有 RSA 的脚本确实有效了几次,并让我连接上了。所以我想我需要了解它为什么有效,并改变一些东西。我尝试生成另一个密钥覆盖现有密钥。但是这次不行了。
我也打开了 NET_SFTP_LOGGING 没有显示错误只是一个普通的 "Connection closed by server"。我已经为此工作了好几天..
我唯一能想到的是,当我重新生成密钥并覆盖 ID_RSA 时,服务器可能认为它不再是正确的密钥了?
另外,当我使用 WinSCP 连接时,似乎 FTP 服务器正在给我一个算法:ssh-rsa 4096、sha256 和 md5 代码。这是我需要在 PHP 脚本中使用才能正确连接的东西吗?只是想排除任何可能性。
更多详情:
- 下班后,我可以通过 FILEZILLA/WINSCP 连接到 FTP 服务器
- CENTOS box 服务器是我们工作网络的一部分。
- 我无法从家里连接到 FTP 服务器。
- 在 CENTOS 机器上,我启用配置了 "ssh_config" 并使用 ssh-kegen -t RSA 生成密钥,我什至将 id_rsa.pub 添加到 authorized_keys
请任何人给我们一些建议,因为这让我耗费了 DAYS 天,希望不是几周!提前致谢。
来自您的代码:
$rsa->loadKey("../../.ssh/id_rsa");
试试这个:
$rsa->loadKey(file_get_contents("../../.ssh/id_rsa"));
此外,
if($sftp->login($usr, $pwd, $rsa)){
您真的想要使用多因素身份验证吗?以我的经验,SSH 服务器设置很少见。更有可能的是你有一个受密码保护的 RSA 私钥,此时你会做更像这样的事情:
$rsa->setPassword($pwd);
$rsa->loadKey(file_get_contents("../../.ssh/id_rsa"));