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.pubpubのついた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 yesPAMが有効のまま、チャレンジレスポンス認証が有効になっていると、PAMのパスワード認証が働くので注意。
修正後、sshdを再起動。
iPad/iPhoneでssh接続するアプリでは、Termiusが秀逸。 無料の機能でもed25519の公開鍵認証が使える。