AWSでUbuntu Serverを立てるときはキーペアに要注意

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タイプのキーペアでアクセスしてみる
Ubuntuが載ったインスタンスを作成します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1471959/9fdfc976-854b-9bef-3d96-7464d6476566.png)

キーペアはRSAを指定して作成します
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1471959/1a08ceb6-2594-6b4c-85ba-e87cab54e596.png)

TerraTermでRSA鍵を使ってログインしようとすると、失敗します

![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1471959/1abcd7e7-55af-b387-9251-243d6e50b5cb.png)


※Ubuntuの場合、ユーザー名は「ubuntu」なのでご注意ください。

https://blog.freedom-man.com/ec2_ubuntu_ec2-user



## Ubuntu 22.04にED25516タイプのキーペアでアクセスしてみる
次に、ED25516タイプのキーペアを作成してアクセスしてみます

先ほどと同様、Ubuntuインスタンスを作成します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1471959/0bb8de89-e300-2755-8527-ea3ed4f7964c.png)

キーペアはED25516を指定して作成します
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1471959/882e4052-94cf-7134-bb42-32f50ab6ddbd.png)

ED25516鍵を使用してアクセスを試みると。。。
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1471959/e909df37-e203-5940-cb58-cce7ef8d0389.png)

ログインできました！
![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1471959/cc92a512-5a42-9777-ae09-91292bc033e0.png)

## Ubuntu 20.04にRSAタイプのキーペアでアクセスしてみる
じゃあどのバージョンならRSAタイプのキーを使用できるのか、試しにひとつ前のバージョン「20.04」のUbuntu で試してみました

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1471959/63e9a68d-152b-58cb-431f-68f0ed6461c0.png)

一番最初に作成したRSA鍵を使用してアクセスを試みると。。。
![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1471959/dd601d8a-f20e-5160-0669-73eaf305e154.png)

ログインできました！
![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1471959/e4de8a36-024d-0275-1c28-5ec9c80814ca.png)




## Ubuntu 20.04にED25516タイプのキーペアでアクセスしてみる
最後に、ED25516でもアクセスできるか試してみます

ED25516鍵を使用してアクセスを試みると。。。

![9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1471959/9c26396d-027a-0cc6-878b-e71612c2b124.png)

ログインできました！！
やはり、ED25516タイプならどのバージョンでも使用可能のようです
![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1471959/2b49743c-d55e-8618-8910-8634fecea44a.png)

# RSAタイプでUbuntu 22.04を立ち上げてしまった場合の対処方法
作成しなおしをしないといけないわけではなく、対処方法もあります
PowerShellなどのTeraTerm以外のツール使ってログインし、`sshd_config`の中身を書き換えることで、TeraTermからRSA鍵を使ってログインできるようになります

1. PowerShellでssh接続
    ```
    > ssh -i 鍵ファイルのパス ubuntu@インスタンスのパブリックIPアドレス
    ```
1. 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より抜粋しています）

https://help.arena.ne.jp/hc/ja/articles/5737789875223-Ubuntu-22-04-LTS%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E3%81%ABSSH%E6%8E%A5%E7%B6%9A-%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93-

# なぜRSAタイプのキーペアは無効化されてしまったのか
調べてみたところ、ED25516鍵はRSA鍵よりも強固な暗号化アルゴリズムに対応しているようです

https://linuxfan.info/ssh-ed25519

じゃあこれから全部のキーペアをED25516にすればいいのかというと、どうやらそうでもなさそうです
以下の記事を見ると、Windowsインスタンスでは使用できなかったり、シリアルコンソールでサポートされていなかったりするようです

https://dev.classmethod.jp/articles/create-keypair-ed25519/

試しにWindowsServerを作成してみましたが、確かにED25516鍵は選ぶことができませんでした

![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1471959/93785ec8-9f80-3ba7-53ef-2b0992d241ca.png)


Ubuntuインスタンスの場合は迷いなくED25516タイプで作成してよいと思いますが、その他の場合はどちらを使うのか考える必要がありそうです