dullwhaleのメモ帳

何度も同じことを調べなくてよいように...

OpenSSHクライアント更新後にホストへ急に接続できなくなった

原因

Unable to negotiate with HOSTNAME port 22: no matching host key type found. Their offer: ssh-rsa

OpenSSHの最近のアップデートでSHA1 + RSA署名がデフォルトで無効化された。 SHA-256/512 + RSAの署名はデフォルトでサポートしている。

サーバとクライアントのネゴシエーションにおいて、サーバ側のSSHの実装が古いとSHA1 + RSAぐらいしか共通して喋れるアルゴリズムがなかったりする。

対処

サーバ側のOpenSSHも更新したいが、事情によってはできないことがある。

その場合にはクライアント側のconfigのホストごとの設定に以下を追加する。

Host foo
  HostkeyAlgorithms +ssh-rsa
  PubkeyAcceptedAlgorithms +ssh-rsa

一度だけしか接続しないホストなら、sshコマンドのオプションで指定することもできる。

-o 'HostKeyAlgorithms=+ssh-rsa'

詳しくは公式のリリースノートを読め。

https://www.openssh.com/txt/release-8.8