【问题标题】:PHPSecLib Password protected RSA and user authenticationPHPSecLib 受密码保护的 RSA 和用户身份验证
【发布时间】:2015-02-23 23:34:34
【问题描述】:

我正在尝试使用 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 密钥,但不知何故,密钥没有正确加载

【问题讨论】:

    标签: php ssh rsa sftp phpseclib


    【解决方案1】:

    有一个示例指定如何加载受密码保护的密钥文件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');
    

    请记住,您不会将密码发送到服务器。您只需要密码即可成功加载密钥文件。然后将用户名和密钥发送到服务器以对您进行身份验证。

    【讨论】:

    • 我发现问题是由其他原因引起的,在帖子中添加了注释,对此感到抱歉。
    • 您能否使用密钥文件通过 PuTTY 或其他 SSH/SFTP 客户端登录?如果不是,那么我怀疑密钥文件不正确。
    • 哈..密钥文件是DSA,脚本需要RSA。真可惜:(
    • 您能否获得一个可以使用的 RSA 密钥文件,或者将您的 DSA 密钥转换为 RSA 密钥?我不熟悉不同的密钥格式,所以我不知道这是否可能。
    • 我想知道,您能否将密钥导入 PuTTY 密钥生成器,然后将其导出为 RSA 密钥? electrictoolbox.com/putty-rsa-dsa-keys
    【解决方案2】:

    无法解决,因为脚本需要 RSA 并且密钥是 DSA

    【讨论】:

      猜你喜欢
      • 2014-11-20
      • 2013-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-31
      • 2011-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多