AmazonLinux2022へTeraterm接続で躓いた件について
TeratermからAmazon Linux 2022へのSSH接続で認証エラーが発生した際の対処法を解説。RSAキーがデフォルトで無効になっていることが原因で、sshd_configファイルの修正で回避できました。
目次
概要
本日は、TeratermからAmazonLinux2022へ接続した際に、時間を溶かしたので備忘録として記録します。
前提条件
- Amazon Linux2022インスタンスをAWSにデプロイ済みであること。
※AmazonLinux2022のデプロイ方法は以下を参考にしてください。
Launching Amazon Linux 2022 via EC2 Management Console
環境
ツール名 | バージョン |
---|---|
Teraterm | 4.106 |
(bash client)ssh | OpenSSHforWindows_8.1p1, LibreSSL 3.0.2 |
(bash client os) | Microsoft Windows [Version 10.0.19043.1348] |
事象
TeratermからAWS上に建てたAmazonLinux2022に対して接続すると認証に失敗する事象が発生します。
Windowsのコマンドプロンプトからssh接続すると正常に接続できます。 ※altest.pemは、AmazonLinux2022インスタンス作成時に指定した秘密鍵を指定します。
D:\***\***>ssh -i altest.pem ec2-user@13.114.102.110
The authenticity of host '13.114.102.110 (13.114.102.110)' can't be established.
ECDSA key fingerprint is SHA256:u2mgWsLP+vfrTtQmNIGRFFVEXl5K50hGy13jmGIjTA4.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '13.114.102.110' (ECDSA) to the list of known hosts.
__| __|_ )
_| ( / Amazon Linux 2022 AMI
___|\___|___| Preview
http://aws.amazon.com/linux/amazon-linux-2022
ssh接続ログを見ると、ssh-rsaが許可されていない旨のログがでていることが確認できます。
これは、AmazonLinux2022内部のOpenSSHがRSA/SHA1(ssh-rsaシグネチャ)をデフォルトで無効化されている事に起因します。
[root@ip-10-0-0-120 ssh]# tail -f /var/log/secure
Dec 3 17:44:15 localhost sshd[14533]: userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]
[root@ip-10-0-0-120 ssh]# ssh -V
OpenSSH_8.6p1, OpenSSL 1.1.1l FIPS 24 Aug 2021
対処
sshd_configの先頭行等に PubkeyAcceptedAlgorithms=+ssh-rsa
を書き込み、ssh-rsaシグネチャを許可するようにします。
cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.org
cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_$(date +%Y%m%d)
sed -i '1s/^/PubkeyAcceptedAlgorithms=+ssh-rsa\n/' /etc/ssh/sshd_config
systemctl restart sshd.service
動作確認
再度、Teratermからインスタンスにアクセスすると正常に接続できることが確認できます。
ログ上からも認証が許可されていることが確認できます。
[root@ip-10-0-0-120 ssh]# tail -f /var/log/secure
Dec 3 18:31:10 localhost sshd[15526]: Accepted publickey for ec2-user from ***.***.***.*** port 50731 ssh2: RSA SHA256:************************
Dec 3 18:31:10 localhost sshd[15526]: pam_unix(sshd:session): session opened for user ec2-user(uid=1000) by (uid=0)
Dec 3 18:31:32 localhost sshd[15560]: Received disconnect from ***.***.***.*** port 50731:11: disconnected by server request
Dec 3 18:31:33 localhost sshd[15560]: Disconnected from user ec2-user ***.***.***.*** port 50731
Dec 3 18:31:33 localhost sshd[15526]: pam_unix(sshd:session): session closed for user ec2-user
まとめ
AmazonLinux2022のOpenSSLのバージョンが高いことによるもので、とても、勉強になりました。
以下、リンクは、AmazonLinux2022、AmazonLinux2、CentOS、Rocky LinuxについてAmazonLinux2022の位置づけが語られている興味深い記事なので是非みてみてください。
What’s different about Amazon Linux 2022? - DEV Community
余談
AmazonLinux2022インスタンス作成時に、ユーザデータとして以下を記述し、デプロイすることで本記事事象を回避できます。
#!/usr/bin/env bash
cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.org
cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_$(date +%Y%m%d)
sed -i '1s/^/PubkeyAcceptedAlgorithms=+ssh-rsa\n/' /etc/ssh/sshd_config
systemctl stop sshd.service
systemctl start sshd.service