ubuntu 22.04 ssh 公開鍵認証 失敗する

/ Linux

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に公開鍵を追記し、ログインを行う。