cBlog

Tips for you.

MacでSSH接続する際の公開鍵認証の設定とパスワード認証の無効化

スポンサーリンク
※当ブログのAmazon、iTunes、サウンドハウス等のリンクはアフィリエイトを利用しています。

キーチェーン アイコン

サーバとして使っているMac miniにSSH接続する際の公開鍵認証を設定し、パスワード認証は無効にしました。サーバもクライアントもMacですが、一方のみがMacの場合も参考になると思います。

 

用語の定義

  • サーバ(リモート)
  • クライアント(ローカル)
  • 公開鍵:暗号化に使う
  • 秘密鍵:復号に使う
  • パスワード:ログインに使う
  • パスフレーズ:秘密鍵の暗号化に使う

 

そもそもどっちで鍵を作るのか

暗号理論的には受信者がキーペアを作成し、公開鍵を渡すようだが、SSHの場合は双方向通信なイメージなのでどっち(サーバかクライアントか)が用意するのかわからなくなる。調べてみたらどっちでもいいらしい。

midori-kasugano.hatenadiary.org

今回はクライアント側で作成する。

 

公開鍵認証の設定(クライアント側でする)

1. 以下のコマンドでサーバhogeに渡す用のキーペアを作成する。(すべてのサーバで同じ鍵を使うことも可能だが非推奨。)

$ ssh-keygen -t ed25519 -C "comment" -f ~/.ssh/id_hoge

パスフレーズを2回聞かれるので入力する。

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

あとでパスフレーズを変更したくなった場合は、以下のコマンドが使える。

$ ssh-keygen -p -f ~/.ssh/id_hoge

 

2. 一般的にはssh-agentをバックグラウンドで起動する必要があるが、当環境ではすでに起動していた。確かめると、オンデマンドで起動するため自動起動の設定は必要ないようだ。

参考

qiita.com

 

3. ~/.ssh/configに以下の記述を追加する。

Host *
  AddKeysToAgent yes
  UseKeychain yes

Host hoge
  HostName 192.168.1.2
  User user
  IdentityFile ~/.ssh/id_hoge

 

4. 以下のコマンドで秘密鍵をssh-agentに追加する。

$ ssh-add -K ~/.ssh/id_hoge

パスフレーズはキーチェーンに保存される。

 

5. 以下のコマンドで公開鍵をサーバに転送する。

$ ssh-copy-id -i ~/.ssh/id_hoge 192.168.1.2

サーバの~/.ssh/authorized_keysに保存される。

 

6. 以下のコマンドでサーバにログインする。

$ ssh hoge

以下、サーバ側で行うことになる。

 

パスワード無効に設定(サーバ側の操作)

7. /etc/ssh/sshd_configの内容を以下に従い変更する。

-#PasswordAuthentication yes
+PasswordAuthentication no

UsePAM yesの場合は次も行う。

-#ChallengeResponseAuthentication yes
+ChallengeResponseAuthentication no

 

8. sshdを再起動する。今回はシステムを再起動した。

 

9. パスワードでログインしてみて無効なことを確認する。

% ssh -o PubkeyAuthentication=no 192.168.1.2

以下のように表示されれば成功。

user@192.168.1.2: Permission denied (publickey).