Macの画面共有、特に踏み台サーバがあるときのvncポートフォワーディング

vncで画面共有ができる。同じネットワーク内なら、MacならFinder/Go/Connect to Server (⌘+K)で出てくるウィンドウでvnc://[host]とかやればつながる。

問題はネットワークが違うとき。例えば、研究所のネットワーク内にあるマシン(machine)にはインターネットにつながってるサーバ(server)を経由しなければならないようなとき。こういうときは上のようにやっても当然ながら(machine)を見つけられなくて失敗する。

(machine)のvncで使っているポート(5900とか)を、(server)を通したsshトンネルで、ローカルマシン(local)のとあるポート(5901)に転送に転送してやればよい。(local)のlocalhost:5901につなぐことで、暗号化されているsshトンネルを通して(machine)とvnc接続ができる。
1. まず(server)、(machine)ともに公開鍵認証でsshログインできるようにしておく。
ここにやり方を書いてある。
SSHの公開鍵認証設定 - yutoichinoheの日記
2. ~/.ssh/configをつくる

~/.ssh/config

Host [machine name]
  User [user]
  ProxyCommand ssh [server name] nc -w 10 [machine host] 22
  LocalForward 5901 [machine host]:5900

Host [server name]
  Hostname [server host]
  Port 22
  User [user]
  Identityfile ~/.ssh/id_dsa

3. つなぐ

$ ssh [machine name]

としておいて、vnc://localhost:5901につなぐ。


参考にした。
ssh で踏み台サーバを経由して画面共有(VNC)する - Qiita
ProxyCommandによるsshの多段接続について -- ぺけみさお
http://mattintosh.blog.so-net.ne.jp/2012-03-03_macosx_vncoverssh