ssh port forwading memo
ssh port forwadingでゴニョゴニョしようとして、なんだかよくわからなくなったので、まとめてみた。
そもそも許可されていないとできない AllowTcpForwarding yes
sshd_config
AllowTcpForwarding yes
LとRの違い
参考:技術的雑談-sshのportForwadingってなあに? - Tsubasa's HomePage
- -Lでは、sshを使った側のサーバに転送用のポートができる
- -Rでは、sshdのある側のサーバに転送用のポートができる
L
host2# ssh -l hoge -L 8880:host1:80 host1
- host2側でnetstat -aすると、127.0.0.1:8880がlistenになっている
- host1側は特に変化無し
R
host2# ssh -l hoge -R 8880:host1:80 host1
- host2側は特に変化無し。
- host1側でnetstat -aすると、127.0.0.1:8880がlistenになっている。
127.0.0.1でしかlistenしないの? => GatewayPorts yes (ポート中継の許可) で0.0.0.0のlistenになる
Nとかfと一緒に使うと嬉しいかも。
-N
SSH (1)
リモートコマンドを実行しません。これはポート転送のみをおこないたい場合に便利です (プロトコル バージョン 2 のみ)。
-f
SSH (1)
ssh がコマンドを実行する直前に、バックグラウンドに移行するよう指示します。これはssh にパスワードあるいはパスフレーズを入力する必要はあるものの、そのコマンド自体はバックグラウンドで実行させたいときに便利です。これは-n オプションも含んでいます。リモートサイトで X11 プログラムを起動させる場合には、
ssh -fhostxterm
などとやるのがおすすめです。
多段転送
参考:SSH/多段ポートフォワードでSSH接続 - yanor.net/wiki
例)host3:80 -> host2:81 -> host1:82
host1の82番にアクセスすることで、host3の80番にアクセスできる。
host3# ssh -t -R 81:localhost:80 host2 ssh -t -R 82:localhost:81 host1