Mac同士をSSH経由でリモート接続
MacOSX*1にはデフォルトでVNCを使った画面共有があります
なので、Mac同士で接続するのはもちろん、
WindowsからVNCクライアントでMacを操作したりできます*2
これを外部回線経由にする場合、さすがに生でポートを開けるなんてのはありえないので、
SSHを経由することになるわけですが、Windows間での話は以前書いています
SSHトンネリングでWindowsのリモートデスクトップをつなぐ - どっかのBlogの前置きのような
Macでも原理的にはこれと同じなのですが、一応自分用のメモということで、
改めて書き留めておきます...φ(・ω・`)
前提
リモートされる側Aの作業
- 接続用のアカウントを作る(必要ならば)
- 画面共有を有効にする
- 共有ユーザを追加する(必要ならば)
AとBでログインアカウント名が違う場合、
AにBのユーザ名を登録する必要があります
同じの場合は不要です
次に、「システム環境設定->共有」とたどり、「画面共有」にチェックを入れます
これでVNCが有効になりますが、接続ユーザ名が違う場合、
許可するユーザに接続に使うBのユーザ名を追加する必要があります
つまり、接続ユーザ名が同じであれば、
画面共有にチェックを入れるだけです(`・ω・´)
リモートする側Bの接続方法
以前の記事ではPuttyでの設定方法を書きましたが、
Macのターミナルにはデフォルトでsshコマンドがあるので、
オプションを与えて開くだけです
ssh [Cのユーザ名@]Cの外部向けサーバ名[ -p CへのSSHポート] -L Bのbindポート:AのローカルIP:AのVNCポート -N 例: hoge@example.com -p 12345 -L 22222:192.168.10.100:5900 -N
ポートの部分までは普通のSSH接続と同じで、後ろが違います
以前にも書いてますが、改めて確認すると・・・
- -L:トンネリングするというオプション
- Bのbindポート:B側がローカルで使うポート
- Bで使ってなければ何番でもよく、外に開いておく必要もない
- AのIP:Aが所属するネットワークでのAのプライベートIP
- AのVNCポート:転送先であるAのVNC用ポート(通常5900)
- -N:コマンドを受け付けず、待ち状態にする(トンネル時必須)
・・・ということです
面倒ならば、shファイルに書き留めて実行権限でも与えておくと良いでしょう
この開いた状態で、Finderの「移動->サーバへ接続」を選び、
以下のリソースを指定するだけです
vnc://127.0.0.1:さっき指定したローカルbindポート/ 先ほどの例なら: vnc://127.0.0.1:22222/
試しに光ポータブルのEM回線経由でつないでみましたが、
さほど操作に支障はありませんでしたし、
環境さえ整えれば簡単で安全なので、是非お試しください(`・ω・´) b
なお、これを応用すれば、Windows->MacやMac->Windowsも簡単です
要は、トンネルを開いてクライアントの接続をローカルに向けるだけです
同じように、任意のポートを中継できるので、
例えば外部サーバのMySQLをリモートからWorkBenchで操作、なんてのも可能です
これはまた次の機会に(`・ω・´)ノ