仮想マシンでUbuntu22.04を立てて早速TeraTermで接続しようと思ったらつながらない!?
これはUbuntu22.04に入っているOpenSSHの8.8系からSHA-1を使用したRSA鍵がデフォルトで廃止になったこととTeraTermがSHA-2 RSAに対応していないことが原因です。
すなわちSHA2 RSAのrsa-sha2-256
(sha-256)やrsa-sha2-512
(sha-512)などのアルゴリズムは大丈夫なのでRSA鍵がダメというわけではないです。
さらに言えば、TeraTermではなくCommandPromptやPowerShellなどでならRSA鍵でも(SHA-1は除く)SSH接続は可能です
でも、TeraTermで接続できないのはちょっと困りますよね。
これに関するチケットはあがっているので今後改善はあるかもしれません。
取り敢えず現時点での解決を試みたいと思います。
解決その1
RSA以外のアルゴリズムを使う
RSA以外の暗号化アルゴリズムは
- ECDSA
- Ed25519(おすすめ)
とかがあるので鍵を生成するときにこれらを指定する方法です。
ssh-keygen -t ecdsa
ssh-keygen -t ed25519
専門家ではないので割愛しますが、鍵の適切なbit長は安全性や処理負荷の観点から色々いい長さがあるみたいです。
AWSではRSAとEd25519の2種類が選べるので、EC2でUbuntu22.04をたてるときはEd25519のキーペアを選ぶようにすると、良さそうです。
解決その2
sshの設定でssh-rsa
を許可する。
これはあまり推奨される方法ではないですが、一応可能です。
CommandPromptやPowerShellなどでまずはアクセスをして/etc/ssh/sshd_config
に下記の設定を追記します。
PubkeyAcceptedAlgorithms=+ssh-rsa
これでsshd
をリスタートします。
sudo systemctl restart sshd
これでTeraTermからでもRSA鍵を用いてUbuntu22.04に接続できるようになります。