0

データ サプライヤは、SFTP サーバーを使用するための公開 SSH キーを要求しました。彼らは私たちに次のものを提供してくれました:

  • ユーザー名
  • パスワード
  • ホスト名
  • ポート

ssh2.sftp//秘密鍵とユーザー名/パスワードを使用して、php 内でストリーム ラッパーを使用しようとしています。私のコードは次のとおりです。

$options = array(
    'ssh2' => array(
        'privkey_file' => '/path/to/priv_key',
    ),
);
$context = stream_context_create($options);
fopen('ssh2.sftp://<username>:<password>@<host>:<port>', 'rb', false, $context);

結果:

Warning: fopen(ssh2.sftp://...@<ip>...): failed to open stream: operation failed in ...

Linux の sftp コマンドを使用して接続できるため、接続が機能し、資格情報が正常に機能していることがわかります。

sftp -oPort=<port> -i /path/to/priv_key -v <username>@<host>

結果:

Authenticated with partial success.
password: <password-entered>
debug1: Authentication succeeded (password).
debug1: channel 0: new [client-session]
debug1: Sending subsystem: sftp
sftp>

誰にもアイデアはありますか?

ssh2機能を使用するアイデアは自由ですが、ファイル システムストリーム機能を使用したいと強く考えています。

4

1 に答える 1

0

正直なところ、純粋な PHP SFTP 実装である phpseclibを使用したほうがよいと思います。とりわけ、libssh2 よりも問題を診断する方が簡単です。

また、ファイルシステムとストリーム関数を使用したい場合、phpseclib はそれらもサポートしています:

https://github.com/phpseclib/phpseclib/blob/master/phpseclib/Net/SFTP/Stream.php

于 2013-09-03T14:12:07.580 に答える