4

PHPを使用してプロキシ経由でssh接続を確立することは可能ですか?

私のphpコードは

$connection = ssh2_connect('x.x.x.x');

しかし、それは以下のエラーを与えます

PHP Warning:  ssh2_connect(): Unable to connect to x.x.x.x

コマンドラインからもssh接続を確立できません。

ssh root@x.x.x.x

解決策 (FAIL)

それから私は解決策を見つけました。ファイルを作成**~/.ssh/config**し、それにプロキシ定義を追加しました。

Host x.x.x.x
    Hostname x.x.x.x
    User root
    ProxyCommand /usr/bin/corkscrew proxy.somewebsite.com 10080 %h %p

その後、コマンドライン経由でsshに接続できました:)

しかし、まだphpコードに接続できません。私はまだ同じエラーが発生します:(

ここでの問題は、ssh2_connection関数が ssh 構成ファイルを使用していないことです。関数にそれを使用するように指示する方法はありますか?

4

2 に答える 2

0

したがって、 Corkscrewを介して xxxx への接続をトンネリングしています。これには、HTTP CONNECT プロキシが機能する必要があると思います。

HTTP CONNECT は非常に単純なプロトコルなので、それを理解させますが、理解したら、phpseclib (元の投稿で実際に使用していないことに注意する必要があります) を使用して、ソケット オブジェクトを変更できます。ソケット オブジェクトを準備します。すなわち。ホスト名とポート番号をコンストラクターに渡す代わりに、ソケットを渡します。コード例:

<?php
// http://us3.php.net/manual/en/context.socket.php
$opts = array(
    'socket' => array(
        'bindto' => '192.168.1.100:0',
    ),
);
$context = stream_context_create($opts);
$socket = stream_socket_client('tcp://example.net:80', $errno, $errstr, ini_get('default_socket_timeout'), STREAM_CLIENT_CONNECT, $context);

$ssh = new Net_SSH2($socket); 

より詳しい情報:

https://github.com/phpseclib/phpseclib/issues/742#issuecomment-122351289

于 2016-06-05T00:30:35.010 に答える