macOSにリモート接続する

家のmacOSに外部から接続できるようにした際の手順をまとめます。 OSはMojaveです。 ルーターはbuffaloのやつ。

1. macOSでリモートアクセスを許可する

システム設定 -> 共有で移動して、以下のようにリモートログインをonにします。 今回はVCNも使いたかったので、画面共有もonにしています。

f:id:endosan:20190508210233p:plain

同時に、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番号/で接続できてそこから 以下の画面が出てログインできる。

f:id:endosan:20190508215158p:plain