我正在尝试使用PHPSecLib通过PHP中的SFTP连接到SSH2服务器。但我的问题是,服务器需要一个受密码保护的密钥文件,但也需要用户名和密码。似乎只能提供用户名+密码或用户名+密钥文件(可选择密码保护)。
如何使用所有这些东西登录?
http://phpseclib.sourceforge.net/
我的代码看起来像
$key = new Crypt_RSA();
$key->setPassword('keypwd');
$key->loadKey(file_get_contents('ssh_file.ppk'));
$sftp = new Net_SFTP('hostname', 22);
if (!$sftp->login('username', $key))
echo 'Failed';
else
echo 'Success';
但我应该在哪里放'密码'?
- 编辑:服务器只需要RSA密钥,但不知道密钥未正确加载
答案 0 :(得分:5)
有一个示例指定如何加载受密码保护的密钥文件on the phpseclib website。请注意第$key->setPassword('whatever');
行
<?php
include('Net/SSH2.php');
include('Crypt/RSA.php');
$ssh = new Net_SSH2('www.domain.tld');
$key = new Crypt_RSA();
$key->setPassword('whatever');
$key->loadKey(file_get_contents('privatekey'));
if (!$ssh->login('username', $key)) {
exit('Login Failed');
}
echo $ssh->exec('pwd');
echo $ssh->exec('ls -la');
请记住,您没有将密码发送到服务器。您只需要密码即可成功加载密钥文件。然后将用户名和密钥发送到服务器以验证您的身份。
答案 1 :(得分:-1)
由于脚本需要RSA且密钥为DSA
,因此无法解析