2

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キーのみを必要としますが、どういうわけかキーが正しくロードされていません

4

2 に答える 2

5

phpseclibWebサイトにパスワードで保護されたキーファイルをロードする方法を指定する例があります。行に注意してください$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');

パスワードをサーバーに送信していないことに注意してください。キーファイルを正常にロードするには、パスワードが必要です。次に、ユーザー名とキーがサーバーに送信され、ユーザーが認証されます。

于 2012-11-29T22:05:06.533 に答える
-1

スクリプトにはRSAが必要であり、キーはDSAであるため、解決できません

于 2012-11-29T23:10:49.133 に答える