PHP Conference Nagoya 2025

ssh2_tunnel

(PECL ssh2 >= 0.9.0)

ssh2_tunnelリモートサーバーを経由するトンネルをオープンする

説明

ssh2_tunnel(resource $session, string $host, int $port): resource

現在接続している SSH サーバーを経由して、 任意のホスト/ポートへのソケットストリームをオープンします。

パラメータ

session

ssh2_connect() のコールによって取得した SSH 接続リンク ID。

host

port

戻り値

例1 任意のホストへのトンネルのオープン

<?php
$connection
= ssh2_connect('shell.example.com', 22);
ssh2_auth_pubkey_file($connection, 'username', 'id_dsa.pub', 'id_dsa');

$tunnel = ssh2_tunnel($connection, '10.0.0.101', 12345);
?>

参考

  • ssh2_connect() - SSH サーバーに接続する
  • fsockopen() - インターネット接続もしくは Unix ドメインソケット接続をオープンする

add a note

User Contributed Notes 1 note

up
1
marc
9 years ago
ssh2_tunnel returns a socket stream (e.g, the output of fsockopen). You can use something basic like this to send a line break and get any output back to test that it's working:

fwrite($tunnel, "\n");
while (!feof($tunnel)) {
echo fgets($tunnel, 128);
}

Just a reminder: you can't currently use the socket with any of the cURL functions.
To Top