OSXのコマンドラインでVNC(画面共有)をSSH経由で接続する方法(自動ポートフォワード)


MacOSでSSH経由でVNCでアクセスする場合、SSHのポートフォワードとVNCクライアントを同時に起動/後片付けをしなければならないので、こちらを簡単にするためのシェルスクリプトの方法です。

作業としては2パートに分かれます
1. OSX標準のBashが古いので4系にバージョンアップする
2. シェルスクリプトの作成

Bashのバージョンアップ

HomeBrewを使ってBashをインストールします。

$ brew install bash

/etc/shellに標準Shellとして下記を登録する

$ sudo vi /etc/shell

下記を追記

/usr/local/bin/bash

chshコマンドを利用してShellをインストールしたものに変更

$ chsh 

Shellの項目を下記に書き換えます。

Shell: /usr/local/bin/bash

terminalを再起動

下記コマンドでbashが4系になっていることを確認

echo $BASH_VERSION

スクリプトの作成

下記のようなこんなスクリプトを作成
('vps'は接続先のホスト名 .ssh/configで記載)

#!/usr/local/bin/bash
coproc ssh -L 5901:localhost:5901 vps
open vnc://localhost:5901
echo exit >&${COPROC[1]}
wait

以上で、上記スクリプトを起動すればポートフォワードしながらvnc(画面共有)が立ち上がります。
画面共有のプロセスを落とせば自動的にポートフォワードのプロセスも終了します。