2023年6月へ

client_global_hostkeys_prove_confirm: server gave bad signature for RSA key 0: incorrect signature

公開日:

最終更新日:

開発

AI要約

SSH接続時に表示される「client_global_hostkeys_prove_confirm: server gave bad signature for RSA key 0」というメッセージは、実際にはエラーではなく、SSHのバージョン間の互換性に起因する警告です。リモートサーバーの古いSSHバージョン(OpenSSH 7.4p1)が問題の一因であり、ローカル側の~/.ssh/configに「UpdateHostKeys no」を設定することで回避可能です。また、近年は安全性と性能の観点からRSAではなくEd25519やECDSAアルゴリズムの鍵生成が推奨されています。

  • SSH
  • エラー
  • 警告
  • RSA鍵
  • SSHバージョン
  • OpenSSH
  • 鍵生成
  • Ed25519
  • ECDSA
  • セキュリティ

しばらく前から ssh 接続するときに,このエラーがでる。

とりあえず,解決方法はこちらを参照。

https://www.nslabs.jp/ramble-index.rhtml

~/.ssh/config にて,対象のホストに次の行を追加する。

Host target.host
  UpdateHostKeys no

これでエラーはでなくなった。
しかしこのエラーはそもそも何か。

調べてみると,そもエラーではないらしい。

The message "client_global_hostkeys_private_confirm: server gave bad signature for RSA key 0" is not an error, it is a warning, and it is related to some ssh versioning issue. It used to be very common to receive from GitLab.

https://stackoverflow.com/questions/67401049/pulling-from-git-fails-and-gives-me-following-error-client-global-hostkeys-priv

そして,使っている ssh のバージョンによるそうな。

ローカルの ssh は brew でインストールしている。

% ssh -V
OpenSSH_9.3p1, OpenSSL 1.1.1u 30 May 2023

リモートの ssh のバージョンを調べたところ,結構古い。

$ ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017

5年前か。
どうやら,ここが問題のように思われる。

リモート側の ssh のバージョンは,私からいじれないので,この問題は config を修正して,警告なしに接続できるようになったということで解決とします。

SSH 鍵の生成

あと,最近(いつ頃か?)は,ssh の鍵生成に rsa を用いないらしい。

パフォーマンスや安全度を考慮すると、楕円曲線暗号の Ed25519 アルゴリズム (-t ed25519)、あるいは、ECDSA アルゴリズム (-t ecdsa) を使用しておくのがよさそうです(2022 年現在)。 可能であれば、ECDSA よりも高速な Ed25519 を使うのがよいです。

https://maku.blog/p/ftducs9/

そうなのか。というわけで,ssh-keygen のオプションは -t ed25519 にするのが良いようだ。

% ssh-keygen -t ed25519

今後,気を付ける点のひとつ。

©Hiroshi Nagayama