どこでもMyMacがあればSSH接続できる

【2017/02/07更新、過去文整形】かなり楽な方法
どこでもMy Macを使ってssh接続 - yutoichinoheの日記」によると、いちいちアドレスを調べなくてもiCloudのどこでもMyMacが有効になってさえいればラクに接続する方法が載ってました。だからといってレスポンスの遅さは変わりませんが。

$ ssh -2 -6 リモート先のユーザ名@リモート先のPC名.$(echo show Setup:/Network/BackToMyMac | scutil | sed -n 's/.* : *\(.*\).$/\1/p')

これだけ。これだけだけど、毎回このコマンドを入力するのは面倒なので、.bashrcに引数付きaliasを作ってみます。

$ vi .bashrc

【適当な行に追記】
function sshbtmm(){
  ssh -2 -6 $1.$(echo show Setup:/Network/BackToMyMac | scutil | sed -n 's/.* : *\(.*\).$/\1/p')
}

aliasは長いコマンドを短くしたり、複数のコマンドを一回で済ませるようにするものです。引数付きのaliasは厳密にはできなくて、この場合は関数を作ることになります。

専用コマンドとして「sshbtmm」関数を定義し、引数としてユーザ名@PC名を指定するだけで接続できるようになります。第1引数が$1、第2引数が$2…という使い方のようです。

$ sshbtmm リモート先のユーザ名@リモート先のPC名

.bashrc編集後はターミナルを再起動するか、「source .bashrc」で設定ファイルを読み直しましょう。

以下は古い記事になります。


最近メジャーなリモートソフトにTeamViewerというものがあります。 VNCのように相手のPCをリモート操作できるソフトウェアの一種ですが、これは同一ソフトウェアが入っていれば出先だろうが同一LAN内だろうがどこでもリモート操作ができる便利なものです。

ただ、GUIでの操作ではなんら問題がないものの、CUIで操作するときわざわざGUIリモートを開いてiTerm開いて・・・というのはどうも億劫だったので、TeamViewerのような仕組みでSSH接続できるのかなと調べてみたところ、あっさり見つかりました。

ただ、一つ問題がありますが・・・

参考サイト

設定でリモートログインとどこでもMyMacを有効にする

SSH接続の前に、リモートログインとどこでもMyMacを有効にする必要があります。

リモートログインを有効にする

この作業はSSHを受ける側に設定します。

  1. 「システム環境設定」を起動
  2. 「共有」を開く
  3. 「リモートログイン」にチェックを入れる
  4. アクセスの許可「次のユーザのみ」にチェック
  5. 「+」をクリックしてSSH接続をしたいユーザを追加

どこでもMyMacを有効にする

この作業は両方のPCに設定する必要があります。

  1. 「システム環境設定」を起動
  2. 「icloud」を開く
  3. 「どこでもMyMac」にチェックを入れる
  4. どこでもMyMacを有効にすると、グローバルアドレスとIPv6が割り当てられるようです。

ホスト名を割り出してSSH接続する

まず、SSHを受ける側のPCでターミナルを開き、以下のコマンドでホスト名を確認します。

$ hostname
PC名.local

「PC名.local」の「.local」を省いた名前を控えておいてください。 次に、iCloudのアカウント番号を取得します。 ここからはSSHを行う側のPCで作業してください。

$ dns-sd -E
Looking for recommended registration domains:
DATE: ---Tue 07 Feb 2017---
10:47:08.719  ...STARTING...
Timestamp     Recommended Registration domain
10:47:08.720  Added     (More)               local
10:47:08.720  Added                          icloud.com
                                             - > btmm
                                             - - > members
                                             - - - > 0123456789

dns-sdコマンドで出力された最後の数字の所がアカウント番号です。 これまで得た情報を組み合わせて出たものがグローバルのホスト名となります。

PC名.アカウント番号.members.btmm.icloud.com

このホスト名の先頭に設定のリモートログインで追加したユーザ名を付加すればSSH接続できます。

$ ssh ユーザ名@PC名.アカウント番号.members.btmm.icloud.com

どこでもSSHできるようになった!けど…

これで、ルータの設定変更を行わなくてもSSH接続できるようになりました。
ただ、レスポンスがものすごく遅いです。 どこでもMyMacを有効にしたときに、「NAT-PMPとUPnPが無効になっているため、どこでもMyMacの動作が遅くなっている可能性があります」というメッセージが出るので、結局はルータの設定がいるのかなぁみたいな感じです…
多分、NAT-PMPは5351、UPnPは1900ポートを開放すれば行けるかな?でも5351ポートは狙われやすいとか書かれているのでどうしたものか…

カテゴリー: Mac タグ:

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中