あなたが探しているものはリバーストンネルと呼ばれます。スイッチssh
を介して提供します-R
。
-R [bind_address:]port:host:hostport
Specifies that the given port on the remote (server) host is to
be forwarded to the given host and port on the local side. This
works by allocating a socket to listen to port on the remote side,
and whenever a connection is made to this port, the connection is
forwarded over the secure channel, and a connection is made to host
port hostport from the local machine.
OPが回答で発見したように、構文は次のとおりです。
$ ssh -f -N -R vvv:localhost:22 w.x.y.z
例
私は、ネットワーク上のパソコン2台を持っている、lappy
とremotey
。そこで、次のコマンドを実行しますlappy
:
$ ssh -f -N -R 12345:localhost:22 remotey
私はそれが機能していることを確認できます:
$ ps -eaf|grep "[l]ocalhost:22"
saml 27685 1 0 11:10 ? 00:00:00 ssh -f -N -R 12345:localhost:22 remotey
ssh
リモートシステムに個別remotey
にアクセスしてこのコマンドを実行すると、リモートシステムのローカルインターフェイスのポート12345で接続を受け入れていることがわかります。
$ netstat -an|grep :12345
tcp 0 0 127.0.0.1:12345 0.0.0.0:* LISTEN
tcp 0 0 ::1:12345 :::* LISTEN
接続をテストする
次のようにリバースsshトンネルが機能していることがわかります。
にログインする remotey
[user@lappy ~]$ ssh remotey
リバーストンネルポートをテストする
[user@remotey ~]$ ssh -p 12345 localhost
これでlappyに戻るはずです
user@localhost's password:
Last login: Thu Aug 1 17:53:54 2013
/usr/bin/xauth: creating new authority file /home/user/.Xauthority
[user@lappy ~]$
localhost(lo
)以外のインターフェース上のポート?
このようなコマンドを試しても機能しないように見える場合、または常にlocalhost(lo
)インターフェースのポートにバインドされている場合は、頭をかきむしられている可能性があります。
例えば:
lappy$ ssh -f -N -R remotey:12345:lappy:22 remotey
注:このコマンドは、ポート12345 @ remoteyを開き、ポート22 @ lappyへの接続をトンネルするように指示します。
次に、リモートで:
remotey$ netstat -an|grep 12345
tcp 0 0 127.0.0.1:12345 0.0.0.0:* LISTEN
何が起こっているのはあるsshd
の構成は、あなたがこれを行うには許可されていません。実際、この機能を有効GatewayPorts
にしないと()、ssh
ローカルホスト以外にトンネルポートをバインドできません。
GatewayPortsを有効にする
remotey$ grep GatewayPorts /etc/ssh/sshd_config
#GatewayPorts no
有効にするには、このファイルを編集します/etc/ssh/sshd_config
:
GatewayPorts clientspecified
そして再起動sshd
:
remotey$ sudo service sshd restart
もう一度試してみると、後の効果が表示されます。
lappy$ ssh -f -N -R remotey:12345:lappy:22 remotey
そして今度はリモートで確認してください:
remotey$ netstat -anp | grep 12345
tcp 0 0 192.168.1.3:12345 0.0.0.0:* LISTEN 9333/sshd
注:上記ではsshd
、ポート12345で接続するために、プロセスがIPアドレス192.168.1.3を持つインターフェイスでリッスンしていることがわかります。
接続のテスト(パートdeux)
今度は、テスト時に変更したセットアップを使用します。主な違いは、ローカルホストに接続する必要がなくなったことです!
にログインする remotey
[user@lappy ~]$ ssh remotey
逆接続をテストする
[user@remotey ~]$ ssh -p 12345 remotey
これでlappyに戻るはずです
root@remotey's password:
Last login: Wed Aug 21 01:49:10 2013 from remotey
[user@lappy ~]$
参照資料