MacからSSH経由でVNCを使う

UbuntuにVNCサーバは建てたけどデフォルトの5900番台のポートを使って接続してしまうと情報ダダ漏れです(パケット解析出来る人じゃないと無理だと思うけどね…笑)。SSHで接続出来るようにもなったのでトンネリングでVNC接続をしてみたいと思います。

「サーバの待ち受けポートが590X番なのにどうやって22番で接続をするのか?」って思うのですがポートフォワーディングというものを使います。これはクライアントであるMacにポートフォワーディング用のポートを1つ用意してSSHを経由してサーバーとデータをやり取りするというものです。

空きポートの確認

まず、空いているポートが必要なのでポートの空き状況を確認します。多分、1234番あたりが空いてます。lsof -i :LOCAL_PORTとターミナルに入力すると空き状況の確認が出来ます。

sudo lsof -i :1234


上のように入力して何も出なければそのポートは使われていません。もし、使用中の場合は使っているアプリケーション名などが表示されます。その場合は違うポートを選択します。

COMMAND  PID       USER   FD   TYPE     DEVICE SIZE/OFF NODE NAME
ssh     2979 hogehogen    4u  IPv4 0x000000000      0t0  TCP localhost:search-agent (LISTEN)
ssh     2979 hogehogen    5u  IPv6 0x000000000      0t0  TCP localhost:search-agent (LISTEN)

SSHでポートフォワーディング

1234番が空いているとしてSSHで接続します。コマンドは上下どちらでもOK。サーバーのIPアドレスが192.168.0.1、VNCサーバの待受ポートが5901番だとします。

ssh -N -l username -L 1234:192.168.0.1:5901 192.168.0.1
または
ssh -N username@192.168.0.1 -L 1234:192.168.0.1:5901

-Nはサーバーにログインせず、ポートフォワーディングのみ行います。接続の終了はターミナル上でCtrl+Cを押します。ログインしてVNCサーバを起動させる必要がある場合は省略します。

-Lの後にはローカルポート→リモートホスト→リモートホストポートの順にコロンを入れて書きます。これで接続するとローカルポートの1234番がリモートホストの5901番に転送されるようになります。接続にいつもより多少時間がかかるかもしれません。

VNCクライアントをlocalhostに接続

今までVNCクライアントはサーバーに直接接続していましたが、localhost:LOCAL_PORTに接続します。Finderからも接続が出来るのでcommand+Kで接続画面を出してvnc://localhost:1234といった感じで接続すればOK。

Trackback