macOSにリモート接続する
家のmacOSに外部から接続できるようにした際の手順をまとめます。 OSはMojaveです。 ルーターはbuffaloのやつ。
1. macOSでリモートアクセスを許可する
システム設定
-> 共有
で移動して、以下のようにリモートログインをonにします。
今回はVCNも使いたかったので、画面共有
もonにしています。
同時に、macOSのlocal ipを確認しておきます。おそらくリモートログインをonにすると192.168.****
というのが出るのですぐにわかります。
2. global ipの設定
変わる可能性のあるglobal ipを毎回記録するのは面倒なので、無料ドメインを取得します。今回はNO-IPというサイトを利用しました。 global ipが1ヶ月変わらないとドメインが消えるので、ルーター側で強制的に変更して更新するように設定します。
3. ルーターの設定
ルーターの設定画面から3点設定します。
- いちいちlocal ipが変わられると面倒なので静的に指定しました。 MACアドレスとlocal ipを固定することがルーターでできたのでそれを利用しました。
- local ip のportとglobal ipのportを変換する機能が付いていたので、それを利用しました。今回であればlocalマシンの22port(ssh)がglobalの10022portとかに変換しました。流石に22はセキュリティ的によろしくない。
- 無料ドメインを取得したので、global ipとドメインを紐づける設定をルーターで行う。
4. セキュリティ用の設定
このままだとportが空いていて心配なので2つの設定を入れます。
- ログインを共通鍵認証のみにする
- jpドメインのみ通す
4.1 ログインを共通鍵認証のみにする
クラインアント側で鍵を作る
$ ssh-keygen -t rsa -b 4096 -f ~/.ssh/keyname $ ssh-keygen -t ed25519 -f ~/.ssh/keyname # こちらの方が強いらしい
サーバー側に送る。
$ ssh-copy-id -i ~/.ssh/keyname user@remote-ip
サーバー側の.ssh/authorized_keys
に直接追記しても良い。なければ作る。
公開鍵認証を許可する。
/etc/ssh/sshd_config
を編集。
RSAAuthentication yes # macではいらないかも
PubkeyAuthentication yes
パスワード認証をきる。
/etc/ssh/sshd_config
を編集。
PasswordAuthentication no ChallengeResponseAuthentication no
最後に、 システム環境設定の共有のリモートログインをOFFにしてONする。
4.2 jpドメインのみ通す
/etc/hosts.deny
を編集する。全ての接続を禁止する。
ALL: ALL
/etc/hosts.allow
を編集する。一部許可する。国内のものとlocalはokにする
ALL: localhost 127.0.0.1 ALL: 192.168.0.* # Allow SSH connection from .jp domain sshd: *.jp # Allow SSH connection from SoftBank sshd: *.bbtec.net
5. 接続方法
sshするとき
$ ssh -p port番号 user@無料domain
VCNを使うとき
VCNは通信が暗号化されないので、sshのトンネルを使う。
$ ssh -i key -p port番号 -L localのport:localhost:remoteのport user@無料ドメイン
で通信を暗号化する。
macOSなら
finderの移動
-> サーバーへ接続
から
vcn://localhost:port番号/
で接続できてそこから
以下の画面が出てログインできる。