AWSでUbuntu Serverを構築したときに、なぜかSSH接続できなくて困ったため備忘録として残します
結論
- Ubuntu ServerのキーペアはRSAタイプではなく、ED25519タイプで作成する必要がある
- Ubuntu 22.04で採用されているOpen SSHのバージョンでは、RSAタイプの鍵が無効化されたため
- Ubuntu 20.04まではRSAタイプのキーペアが使える
RSAタイプのキーペア | ED25519タイプのキーペア | |
---|---|---|
Ubuntu 22.0.4 | デフォルトでは使用不可 | デフォルトで使用可 |
Ubuntu 20.0.4 | デフォルトで使用可 | デフォルトで使用可 |
やってみる
Ubuntu 22.04にRSAタイプのキーペアでアクセスしてみる
TerraTermでRSA鍵を使ってログインしようとすると、失敗します
※Ubuntuの場合、ユーザー名は「ubuntu」なのでご注意ください。
Ubuntu 22.04にED25516タイプのキーペアでアクセスしてみる
次に、ED25516タイプのキーペアを作成してアクセスしてみます
Ubuntu 20.04にRSAタイプのキーペアでアクセスしてみる
じゃあどのバージョンならRSAタイプのキーを使用できるのか、試しにひとつ前のバージョン「20.04」のUbuntu で試してみました
一番最初に作成したRSA鍵を使用してアクセスを試みると。。。
Ubuntu 20.04にED25516タイプのキーペアでアクセスしてみる
最後に、ED25516でもアクセスできるか試してみます
ED25516鍵を使用してアクセスを試みると。。。
ログインできました!!
やはり、ED25516タイプならどのバージョンでも使用可能のようです
RSAタイプでUbuntu 22.04を立ち上げてしまった場合の対処方法
作成しなおしをしないといけないわけではなく、対処方法もあります
PowerShellなどのTeraTerm以外のツール使ってログインし、sshd_config
の中身を書き換えることで、TeraTermからRSA鍵を使ってログインできるようになります
- PowerShellでssh接続
> ssh -i 鍵ファイルのパス ubuntu@インスタンスのパブリックIPアドレス
- root権限に変更してから
sshd_config
の中身を書き換え、sshサービスを再起動する$ sudo su # cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.backup # sed -i '1s/^/PubkeyAcceptedAlgorithms=+ssh-rsa\n/' /etc/ssh/sshd_config # systemctl restart ssh.service
(以下URLより抜粋しています)
なぜRSAタイプのキーペアは無効化されてしまったのか
調べてみたところ、ED25516鍵はRSA鍵よりも強固な暗号化アルゴリズムに対応しているようです
じゃあこれから全部のキーペアをED25516にすればいいのかというと、どうやらそうでもなさそうです
以下の記事を見ると、Windowsインスタンスでは使用できなかったり、シリアルコンソールでサポートされていなかったりするようです
試しにWindowsServerを作成してみましたが、確かにED25516鍵は選ぶことができませんでした
Ubuntuインスタンスの場合は迷いなくED25516タイプで作成してよいと思いますが、その他の場合はどちらを使うのか考える必要がありそうです