Ubuntu 22.04にアップグレードした直後に以前までログインできていたsshログインが失敗する。これはopenssh-serverのバージョンが変わったことによる。
Permission denied (publickey).
https://access.redhat.com/discussions/5251241
このページに倣って下記を実行する。
sudo sshd -T | egrep "pubkey"
pubkeyauthentication yes
pubkeyacceptedalgorithms ssh-ed25519-cert-v01@openssh.com,ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,sk-ssh-ed25519-cert-v01@openssh.com,sk-ecdsa-sha2-nistp256-cert-v01@openssh.com,rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com,ssh-ed25519,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ssh-ed25519@openssh.com,sk-ecdsa-sha2-nistp256@openssh.com,rsa-sha2-512,rsa-sha2-256
pubkeyauthoptions none
すると、pubkeyacceptedalgorithmsにssh-rsaが含まれていない。これによってssh-rsa書かれている.ssh/authorized_keysは無効になる。/var/log/auth.logには次のようなログが残る。
sshd[2667]: userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]
対処法は、このリストにあるssh-ed25519に注目し、下記の通りに鍵ペアを再生成する。
ssh-keygen -t ed25519
通常通り.ssh/authorized_keysに公開鍵を追記し、ログインを行う。