【发布时间】:2018-12-09 04:36:21
【问题描述】:
我有一个非常简单的 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,没有显示错误,只是一个简单的“连接被服务器关闭”。我已经为此工作了好几天..
我唯一能想到的是,当我重新生成密钥并以某种方式覆盖 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
请任何人给我们一些建议,因为这会消耗我几天,希望不会几周!提前致谢。
【问题讨论】: