読むだけでちょっと賢くなる、架空のまとめスレ

【疑問】外から社内の DB の画面を見たい。SSH のポート転送 -L・-R・-D と X11 転送 -X【LPICレベル1】

21レスカテゴリ:Linux
1: 名無しさん

踏み台のサーバー(203.0.113.5)には SSH で入れる。その奥にある管理画面(192.0.2.20 の80番)を手元のブラウザで見たい

2: 名無しさん

前提のおさらい。SSH は鍵でログインできて、通信は全部暗号化される。ポート番号はサービスの入口で、1023 までは root でないと待ち受けられない

3: 名無しさん

>>1
ローカルのポート転送 -L
ssh -L 8080:192.0.2.20:80 user@203.0.113.5
手元の8080番に来たものを、SSH の中を通して、踏み台から 192.0.2.20 の80番へつなぐ。ブラウザで http://localhost:8080/ を開く

4: 名無しさん

>>3
書き方の順番が覚えられん

5: 名無しさん

>>4
-L [手元で待つアドレス:]手元のポート:行き先のホスト:行き先のポート(ssh の man)
行き先のホストの名前は、踏み台の側から見て解決される。踏み台そのもののサービスなら行き先を localhost にする(-L 8080:localhost:80)

6: 名無しさん

>>5
手元のポートを1024より小さくすると、待ち受けに root が要るから、8080 みたいな大きい番号を使う

7: 名無しさん

逆に、家のマシンの SSH に外のサーバー経由で入れるようにしたい

8: 名無しさん

>>7
リモートのポート転送 -R
ssh -R 2222:localhost:22 user@203.0.113.5
サーバーの2222番に来たものを、手元の22番へつなぐ。サーバーで ssh -p 2222 user@localhost すると家のマシンに入れる

9: 名無しさん

>>8
サーバーの2222番は、ほかのマシンからも使えるん?

10: 名無しさん

>>9
既定ではサーバーのループバック(127.0.0.1)にだけ付く。ほかのマシンからも使わせるのは sshd_config の GatewayPorts(既定 no)。転送そのものを許すかは AllowTcpForwarding(既定 yes)

11: 名無しさん

>>3
いろんな行き先に、まとめて SSH 経由でつなぎたい

12: 名無しさん

>>11
ダイナミック転送 -D。ssh -D 1080 user@203.0.113.5 で手元の1080番が SOCKS プロキシになって、ブラウザのプロキシに localhost:1080 を指定すると、行き先ごとに転送してくれる

13: 名無しさん

>>12
転送だけしたいのに、ログインのシェルが開くのが邪魔

14: 名無しさん

>>13
-N でリモートのコマンドを実行しない、-f で裏に回る。ssh -f -N -L 8080:192.0.2.20:80 user@203.0.113.5

15: 名無しさん

サーバーの GUI のアプリを、手元の画面に出したい

16: 名無しさん

>>15
X11 転送。ssh -X user@203.0.113.5 でつないで、そこで xclock などを起動すると、手元の X サーバーに表示される。-Y は信頼する転送(X の SECURITY 拡張の制限を受けない)
サーバー側は sshd_config の X11Forwarding(man の既定は no、Debian の設定ファイルは yes になってた)と、xauth コマンドが要る

17: 名無しさん

>>16
Debian の ssh は、既定の設定では -X でも -Y と同じ扱いになる(ForwardX11Trusted。ssh の man の Debian 向けの注記)

18: 名無しさん

>>16
つないだ後の DISPLAY はどうなってるん

19: 名無しさん

>>18
localhost:10.0 のようになる。X11DisplayOffset の既定が10で、本物の X サーバーとぶつからない番号から使う。X のディスプレイ番号 n は TCP なら

番ポートに当たる

20: 名無しさん

>>2
試したマシンには sshd が動いてないから、転送そのものは試してない。書式と既定値は ssh・sshd_config の man と、Debian のパッケージに入ってた設定ファイルで確かめた

21: 名無しさん

>>3
-L は手元から向こうへ、-R は向こうから手元へ、-D は SOCKS、-N と -f で転送だけ、GUI は -X か -Y で DISPLAY は localhost:10.0。管理画面は -L で見られた

管理人のひとこと