もう、Linuxサーバーのssh-keygenでecdsaとed25519のキーが作成できるのだし、公開鍵認証に使用する鍵はセキュリティ的にもうあまり高くないrsaキーの4096bit以上ではなく、ecdsaかed25519に切り替えているとは思うけど、sshdの設定がそのままでは、結局、rsaが使用できるままなので、rsaが拒否できないかとおもったのでやってみた。
核心
/etc/ssh/sshd_config に PubkeyAcceptedKeyTypesという項目が設定できるので、それに使用するキーを設定するだけ、 但し安易に設定ミスしリモート接続のみの環境でsshdをリスタートさせると、2度とssh接続できないという悲しい羽目にならないように、十分気をつけ、かつ、別のconigを使って別のプロセスで検証し確実にOKの確信を得てから本番をやるべき
検証前準備
あらかじめssh接続検証ユーザー(sshd_test)とssh-keygenで検証用の各種キーペア(rsa,ecdsa[256|384|521],ed25519)を作成し、authorized_keysに追加しておく
#ユーザー作成
useradd sshd_test
# ssh鍵作成 & 公開鍵認証設定
su - sshd_test
mkdir .ssh
chmod 700 .ssh
cd .ssh
ssh-keygen -t rsa -b 4096 -f id_rsa
ssh-keygen -t ecdsa -b 256 -f id_ecdsa256
ssh-keygen -t ecdsa -b 384 -f id_ecdsa384
ssh-keygen -t ecdsa -b 521 -f id_ecdsa521
ssh-keygen -t ed25519 -f id_ed25519
cat id_*.pub > authorized_keys
chmod 600 authorized_keys
設定検証
下記で、sshd_configファイルを新規に用意して
cd /etc/ssh
cp -p sshd_config sshd_config.1
vi sshd_config.1
ecdsaの256bitと384bitと521bit、ed25519のみに限定するので、ファイル末尾に下記を追加
PubkeyAcceptedKeyTypes=ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519
下記で、設定ファイルをsshd_config.1でport:23を使用するsshdプロセスを別途たてる
/usr/sbin/sshd -f /etc/ssh/sshd_config.1 -p 23
接続テスト
検証用の各種の鍵でport:22とport:23とに接続テストして挙動を確認してみる
cd /home/sshd_test/.ssh
# port:22に接続テスト
ssh -i id_rsa sshd_test@localhos
#=> 接続OK
ssh -i id_ecdsa256 sshd_test@localhost
#=> 接続OK
ssh -i id_ecdsa384 sshd_test@localhost
#=> 接続OK
ssh -i id_ecdsa521 sshd_test@localhost
#=> 接続OK
ssh -i id_ed25519 sshd_test@localhost
#=> 接続OK
# port:23に接続テスト
ssh -i id_rsa sshd_test@localhost -p 23
#=> Permission denied (publickey).
ssh -i id_ecdsa256 sshd_test@localhost -p 23
#=> 接続OK
ssh -i id_ecdsa384 sshd_test@localhost -p 23
#=> 接続OK
ssh -i id_ecdsa521 sshd_test@localhost -p 23
#=> 接続OK
ssh -i id_ed25519 sshd_test@localhost -P 23
#=> 接続OK
設定適用
挙動に問題がなければ
# sshd_configファイルを上書き
cd /etc/ssh
mv -f sshd_config.1 sshd_config
#リブートかける
sync;sync; init 0
注意
rsaの拒否は、自己責任の下で、確実に検証と確認をして行いましょう
とくに、言語のsshモジュールの古いversionのものには、rsa形式までしかサポートしていないものもあるので、itamaeやansibleなどを使用している際に使えなくなる場合があるので、十分に気をつけてください。