3

ssh2_sftpメソッドを使用して SFTP 経由でファイルを送受信するための小さなライブラリを作成した後、接続する必要があるサーバーで ssh 接続が無効になっており、SFTP 経由でしか接続できないことがわかりました。

サーバー接続は、sftp コマンドを使用してコマンド ラインで正常に機能しますが、ssh から「このサービスでは sftp 接続のみが許可されます」というメッセージが表示されます。

そのため、ssh2_sftp が機能するためには以前の ssh 接続が必要であるため、SFTP 認証を使用して SFTP サーバーに接続するために、どのライブラリーやどのようにすればよいかわかりません。

phpseclib は ssh2_ftp とは異なる認証方法を使用していますか?

何か案は?ありがとう。

4

2 に答える 2

2

キーボードインタラクティブ認証の99%は、パスワードの入力を求めるだけです。 純粋なPHPSFTP実装であるphpseclibは、パスワード認証が失敗した場合、キーボードインタラクティブを介してパスワードを送信しようとします。使用方法の例:

<?php
include('Net/SFTP.php');

$sftp = new Net_SFTP('www.domain.tld');
if (!$sftp->login('username', 'password')) {
    exit('Login Failed');
}

// outputs the contents of filename.remote to the screen
echo $sftp->get('filename.remote');
?>
于 2012-09-05T15:49:47.463 に答える
1

はい、あなたは完全に正しい@arkascha...少し調査した結果、理由がわかりました。

自分のサーバーに対してコードをテストしていたとき、それは機能し、他のサーバーに対しては失敗していたので、sshシェル接続が無効になっているためだと思いました。

両方のサーバーに許可された認証方法を (ssh2_auth_none を使用して) 尋ねたところ、何が問題なのかわかりました。

私のサーバー:

[0] => 公開鍵

[1] => パスワード

もう一方のサーバー (失敗していたサーバー):

[0] => 公開鍵

[1] => gssapi-keyex

[2] => gssapi-with-mic

[3] => キーボードインタラクティブ

パスワードを許可しないため、失敗しています。それでおしまい...

お時間を無駄にしてしまい申し訳ありません...どうもありがとうございました

于 2012-09-04T11:33:09.673 に答える