sshで毎回パスワードを入力するのが煩わしいので、パスワードなしでログインできる公開鍵認証を設定。
ssh-keygen
コマンドで公開鍵と秘密鍵のペアを生成。
意識の高い人は、鍵形式にed25519を使う。 RSAはさすがにもう使うべきではないだろう。
-t
オプションにed25519
を入れると、ed25519の鍵が出来上がる。
鍵の保存場所やパスフレーズなどの入力を求められるが、何も入力せずにreturn
でOK。
$ ssh-keygen -t ed25519Generating public/private ed25519 key pair.Enter file in which to save the key (/Users/user/.ssh/id_ed25519):Enter passphrase (empty for no passphrase):Enter same passphrase again:
パスフレーズを設定してもいいが、設定するとsshの接続の度にパスフレーズを求められてしまう。 ちなみに、macOSだとキーチェーンでパスフレーズを覚えていてくれるので、設定しても毎回入力しなくても済む。
公開鍵、秘密鍵が生成されていることを確認。
$ ls .ssh/id_ed25519*.ssh/id_ed25519 .ssh/id_ed25519.pub
pubのついたid_ed25519.pub
が公開鍵。
生成された公開鍵id_ed25519.pub
を接続先のホストに登録する。
接続先のユーザ名がuser
、ホスト名がhost
の場合
$ ssh-copy-id user@host
または、
$ cat ~/.ssh/id_ed25519.pub | ssh user@host 'cat >> .ssh/authorized_keys'
で、リモートホスト側のauthorized_keys
に公開鍵の情報が登録される。
再度sshでログインしてみて、パスワードを求められなければ成功。
パスワード認証を無効にする場合、sshd_config
に以下を設定。
PasswordAuthentication noChallengeResponseAuthentication noUsePAM yes
PAMが有効のまま、チャレンジレスポンス認証が有効になっていると、PAMのパスワード認証が働くので注意。
修正後、sshdを再起動。
iPad/iPhoneでssh接続するアプリでは、Termiusが秀逸。 無料の機能でもed25519の公開鍵認証が使える。