Mac「で」moshを使いたい人は回れ右。
Mac上でmosh-serverを動かして、そこに接続したい人向け。
環境
- サーバ:Mac mini(M1), Monterey
- クライアント:iPad Pro 11-inch(1st generation), iPadOS 15.2.1, Blink(14.0.6)
Catalina以降のアプリケーションファイアウォールがあるOSなら同じ対応と思われる。
設定
Mac側
公式HPの更新がCatalina以前で止まっており使えるか心配だが、Homebrew版がちゃんと更新されているため使える・・・・・・んだけどCatalinaで導入されたアプリケーションファイアウォールが一筋縄でいかない。
brew install mosh
- システム環境設定
- セキュリティとプライバシー
- ファイアウォール
- ファイアウォールオプション
-
opt/homebrew/Cellar/mosh/1.3.2_18/bin/mosh-server
の「外部からの接続を許可」 - 「ダウンロードされた署名付きソフトウェアが・・・」にチェック
mosh-server
の場所は各人の環境に合わせること。特に[1.3.2_18]の部分。
さらに次のスクリプトをMac上に作成しておく。これはgithubから持って来たもの。正直、ファイアウォールのon-off以外は機能してないから省略しても問題ないはず。
# i recommend setting up the following alias first
alias firepower='sudo /usr/libexec/ApplicationFirewall/socketfilterfw'
# temporarily shut firewall off
firepower --setglobalstate off
# add symlinked location to firewall
firepower --add $(which mosh-server)
firepower --unblockapp $(which mosh-server)
# add homebrew location to firewall
firepower --add $(brew --prefix)/Cellar/mosh/1.3.2_2/bin/mosh-server
firepower --unblockapp $(brew --prefix)/Cellar/mosh/1.3.2_2/bin/mosh-server
# re-enable firewall
firepower --setglobalstate on
本来はこれだけで成功することが期待されるけど残念ながら後述の操作が必要。
クライアント側
特になし。
接続方法
mosh-server
が外部と通信できるようにするために一手間かける。
ちなみにファイアウォールを切ってしまえば何の問題もなくmosh-server
と通信できることから、ファイアウォール周りの問題だと分かる。
- クライアントからmosh接続を開始する
-
UDPポートへ接続を試みてる間にクライアントの新規タブもしくはMac側のターミナル上で先述の
firewall_switch.sh
を実行する - 一度接続に失敗する
- 再びmosh接続を試みるとなぜか成功するようになってる!
firewall_switch.sh
に関してはMacのシステム環境設定でファイアウォールをon-offで代用できたかもしれない。やる気がなくてちゃんと検証してない。
一度mosh接続できるようになると、Macを再起動するまではファイアウォールを弄る必要はない。
結論
Macもmoshサーバになる!