はじめに
皆様CentOS6のことはご存知でしょうか。とっくにEoLを迎えて、インターネットに直に繋がるような環境は流石に皆様滅ぼされたことと思います。
しかし、検証用環境などでしぶとく生き残るCentOS6環境がいるかもしれません。
そんな環境につなぐときに、~/.ssh/config
にこんな感じで記載していたかもしれません。
Host arikitari
IdentityFile ~/.ssh/arikitari_id_rsa
HostKeyAlgorithms ssh-dss,ssh-rsa
PubkeyAcceptedKeyTypes ssh-dss,ssh-rsa
事象: Bad key types 'ssh-dss,ssh-rsa'.
さて、私は変態的な環境が好きなのでpacmanが大好きなので、Windowsでmsys2を使っています。
執筆中の現在世の中を騒がせているOpenSSH regreSSHion対応(CVE-2024-6387)のために、おもむろにpacman -Syuu
してパッケージの更新をかけると、OpenSSHのバージョンが上がりました。
アップデート中のログは虚空送りしてしまったので代わりにこれを。
$ssh -V
OpenSSH_9.8p1, OpenSSL 3.3.1 4 Jun 2024
$pacman -Qs openssh
local/openssh 9.8p1-1 (net-utils)
Free version of the SSH connectivity tools
$ls -l /var/cache/pacman/pkg/ | grep openssh
-rw-r--r-- 1 yumetodo なし 982K 10月 5 2023 openssh-9.5p1-1-x86_64.pkg.tar.zst
-rw-r--r-- 1 yumetodo なし 566 10月 11 2023 openssh-9.5p1-1-x86_64.pkg.tar.zst.sig
-rw-r--r-- 1 yumetodo なし 991K 12月 19 2023 openssh-9.6p1-1-x86_64.pkg.tar.zst
-rw-r--r-- 1 yumetodo なし 566 12月 19 2023 openssh-9.6p1-1-x86_64.pkg.tar.zst.sig
-rw-r--r-- 1 yumetodo なし 993K 3月 12 05:10 openssh-9.7p1-1-x86_64.pkg.tar.zst
-rw-r--r-- 1 yumetodo なし 566 3月 16 19:53 openssh-9.7p1-1-x86_64.pkg.tar.zst.sig
-rw-r--r-- 1 yumetodo なし 1022K 7月 2 00:07 openssh-9.8p1-1-x86_64.pkg.tar.zst
-rw-r--r-- 1 yumetodo なし 566 7月 2 02:20 openssh-9.8p1-1-x86_64.pkg.tar.zst.sig
openssh-9.7p1-1からopenssh-9.8p1にあがったっぽいですね。
そして任意のサーバーにSSHしようとすると・・・
Bad key types 'ssh-dss,ssh-rsa'.
.
.
.
terminating, 4 bad configuration options
等と言ってSSHできないわけです。
解決策1: ssh-dss
を除去する
幸いにしてCentOS6はHostKeyとしてssh-rsa
に対応しているので、ssh-dss
を除去するだけでひとまず対応はできそうです。
Host arikitari
IdentityFile ~/.ssh/arikitari_id_rsa
+ HostKeyAlgorithms ssh-rsa
+ PubkeyAcceptedKeyTypes ssh-rsa
- HostKeyAlgorithms ssh-dss,ssh-rsa
- PubkeyAcceptedKeyTypes ssh-dss,ssh-rsa
解決策2: CentOS6側でHostKeyにecdsaを追加する
まずどうにかしてCentOS6サーバーに繋いで、以下の作業をします
$ sudo ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -C '' -N ''
$ sudo chmod 600 /etc/ssh/ssh_host_ecdsa_key
$ sudo chmod 640 /etc/ssh/ssh_host_ecdsa_key.pub
$ sudo vi /etc/ssh/sshd_config # HostKey /etc/ssh/ssh_host_ecdsa_key を追記
$ sudo /etc/rc.d/init.d/sshd restart
クライアント側の ~/.ssh/config
を編集します。
Host arikitari
IdentityFile ~/.ssh/arikitari_id_rsa
+ PubkeyAcceptedKeyTypes +ssh-rsa
- HostKeyAlgorithms ssh-dss,ssh-rsa
- PubkeyAcceptedKeyTypes ssh-dss,ssh-rsa
参考にしたのはこれ。これの場合はCentOS6から別環境、って感じだったので逆手順ですね。