SSHは極めて優れたツールです。Linuxサーバーやクラウドの仮想マシンへの接続において、SSHは今なお最善の選択肢です。しかし、「手元のiPhoneから自宅のMacを操作したい」という目的に限っては、SSHの導入と管理はあまりにも多くの摩擦を伴います。
自宅のプロバイダによる動的IPの変更、ルーターのポート開放、ISPによるインバウンド遮断、会社の厳しいファイアウォールによるポート22のブロック、スマホ側へのSSH秘密鍵の転送。コマンドを1つ実行したいだけなのに、これらの障害が次々と立ちはだかります。
MacとiPhoneの間には、もっとシンプルでスマートな接続方法が存在します。
エンジニアが本当に求めているもの
外出先からMacにアクセスしたいときの目的は、多くの場合シンプルです:
- 実行中のビルドが正常に終了したか確認する
- 停止した開発サーバーを再起動する
- 短いデプロイスクリプトを実行する
- エラーログを数行確認する
- Macに保存されている認証鍵を使って踏み台接続する
これを行うためだけに、複雑なトンネルやダイナミックDNSを設定する必要はありません。必要なのは「確実に繋がるターミナル」そのものです。
なぜMacへのSSH接続は割に合わないのか
SSHはデータセンターに置かれたサーバーのために設計されました。サーバーは固定IPアドレスや安定したドメインを持ち、24時間365日常時稼働しています。
しかし個人のMacは異なります。家庭用ルーターのNAT背後にあり、IPアドレスは頻繁に変わります。ルーターを再起動すればポートフォワーディングの内部割当が狂い、スマホに秘密鍵をコピーする行為はセキュリティ上のリスクも伴います。
苦労して設定できても、定期的なメンテナンスを強いられるため、手軽なリモート操作の目的には不向きです。
WebRTCによる次世代の接続方式
WebRTCはブラウザでのビデオ通話などに使われるプロトコルです。双方がネットワーク設定を変更することなく、NATやファイアウォールを自律的に通り抜ける設計になっています。
ICE(Interactive Connectivity Establishment)という仕組みにより、両機器がシグナリングサーバーを介して最適な経路を瞬時に探索します。通常は端末同士がダイレクトにP2P接続され、極めて厳格なファイアウォール配下では安全なリレーサーバーを経由します。ポート開放もDDNSも一切不要です。
そのため、自宅Wi-Fiはもちろん、外出先のモバイルデータ通信、ホテルのWi-Fi、ポート22が塞がれた職場のネットワークからでも、Macに確実にアクセスできます。
Mackyのセットアップ(約2分)
- macky.devからMacホストアプリをダウンロードして起動します。
- App StoreからiPhoneアプリをダウンロードします。
- 両方のデバイスで同一アカウントにログインします。
- ターミナルセッションを暗号化保護するマスターパスワードを設定します。
- iPhoneアプリのリストからMacを選択してパスワードを入力すれば接続完了です。
SSHとMackyの比較
初期設定の手間
SSHではシステム設定、ルーターのポート開放、DDNS、鍵の配置が必要です。Mackyならアプリを入れてログインするだけで終わります。
ネットワークの安定性
SSHはIP変更やポート制限で簡単に切断されます。WebRTCは電波環境の変化に応じて最適な通信経路へ自動で切り替わります。
セキュリティ
Mackyはビデオ通話の標準規格であるDTLS-SRTPで完全暗号化されます。サーバーは接続の仲介を行うだけであり、ターミナルに入力した文字や出力結果を見ることは一切できません。
Macを経由した安全なサーバー操作
お使いのMacには本番サーバー用のSSHキーが安全に保管されています。Mackyを使えば、スマホに秘密鍵をコピーすることなく、Macを踏み台にして社内サーバーへアクセスできます:
ssh user@my-server.com認証処理はMac内の~/.sshで行われるため、スマホを紛失した際のリスクも最小限に抑えられます。