SSHトンネリングに関する備忘録
やりたかったこと
実験サーバ上で動作するQEMU仮想マシンの画面を、作業用PCのVNC Viewerで表示する。
作業環境
実験サーバ
作業PC
試してみたこと
QEMU起動時のオプションに
-vnc 192.168.1.20:0
を指定してみた
→ 仮想マシンは起動せず。そもそもVNCサーバのIPアドレスは指定できないっぽい?(要調査)実験サーバにVNCで接続し、そこでVNCクライアントを起動して
127.0.0.1
へ接続してみた
→ 一応これでも接続は可能だが、二重に接続する手間が煩雑。
解決策
SSHを利用し、作業用PCのループバックデバイス上のポートから実験サーバのVNCポートに向けてトンネリングを行った。
以下のように-L オプションを指定することでポートフォワーディングを行うことが可能。
$ ssh -L 5901:127.0.0.1:5901 192.168.1.20
このように、PC側のループバックデバイスの5901ポートを叩くことで、サーバを経由して(サーバ側の)127.0.0.1:5901へ接続することができるようになる。
…のだが、ここを理解するのに時間がかかった。
ssh -L (ローカル側ポート):(宛先アドレス):(宛先ポート) (SSH接続先のアドレス)
と指定することで、「SSH接続先のサーバを経由して」「-Lオプションで指定した宛先へ」接続することが可能。
そのため、宛先アドレスを127.0.0.1
とすることで「サーバを経由して127.0.0.1
へ接続する」すなわち、サーバのループバックデバイスへ転送することが可能となる。
ともあれ、以上のようにトンネリングを行ったあとでPC上のVNC Viewerから127.0.0.1:5901
へ接続することで、本来PC側からは見えないはずである実験サーバ上のVNCサーバに接続することができるようになる。