何かをしたら、突然挙動が変わることがある。しかし、それって突然変わったんじゃなくて、突然気がついたというのが本当で、直前の作業が影響したとは限らない。なので、些細なことなら放っておかれてしまうこともある。今回SSHのログインが微妙に時間がかかっていることに気がついた。この微妙というのが曲者で、人生に勘案すると結構時間がかかる。1日10回ログインで365日だと10年で4日くらい待つことになる。同様のケースでWindowsサーバのログインでCTRL-ALT-DELを押さないとログインができないという設定も同じ。自分は、CTRL-ALT-DELを押さなくてもキーを何か押せばログイン画面が出るようにした。
閑話休題
なぜ、SSHのログインに時間がかかるようになったかというと。。。SSHの暗号化キーをrsaからed25519に変えてしまったから。rsaの暗号化は将来的には量子攻撃で解読されてしまう可能性があるので、ed25519にした。ed25519のキーはrsaと比較して強いだけではなくコンパクトでかつ処理が軽く速いので。レガシー環境がなければ使わない手はない。もっとも、rsaも4096で鍵を作れば、強力になるが処理が重い。
手元には以下のようなキーがあり
ls .ssh/id_*
.ssh/id_ed25519 .ssh/id_ed25519.pub .ssh/id_rsa .ssh/id_rsa.pub
クライアントのsshの設定は以下(抜粋)
cat .ssh/config
Host *
User root
Port 22
IdentityFile ~/.ssh/id_ed25519
Protocol 2
としていたのだが、どうやら鍵を順版に試すらしく、rsa -> ed25519で試すらしい。もうrsaの鍵は予備で作ってあるだけで予備なのでauthorized_keysには登録していない。
なので、rsaの待ちだけ遅くなるらしい。
ed25519をメインにしていくなら
cat .ssh/config
Host *
User root
Port 22
IdentitiesOnly yes
IdentityFile ~/.ssh/id_ed25519
IdentityFile ~/.ssh/id_rsa
PreferredAuthentications publickey
Protocol 2
としておけば、証明書認証をまずed25519 -> rsaで試み、それでもダメならパスワード認証をしようとする。
この設定をしただけ待ち時間が無くなった。
サーバの設定も疑うべきだが、クライアントの設定を行うべき。
もう令和のご時世、SSHでパスワードログインがメインという人はもういないと思うので、一度、ssh -vvvなどでどんなログインをしているのかを確認しておくことをお勧めすr。