このセクションでは、SSH クライアントによる EC2 インスタンスへの接続について紹介していきます。

SSH クライアントからプライベートキーを使って EC2 インスタンスへの接続ができるようにします。

EC2 インスタンスのパブリック IPv4 DNS の情報が、EC2 インスタンスへの接続先となります。

プライベートキーを使用せず SSH クライアントから接続しようとすると、接続ができません。

[user@localhost ~]$ sudo ssh ec2-user@ec2-パブリック IPv4 DNS
The authenticity of host 'ec2-パブリック IPv4 DNS' can't be established.
ーー(省略)ーー
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'ec2-パブリック IPv4 DNS' (ECDSA) to the list of known hosts.
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
[user@localhost ~]$

接続する EC2 インスタンスのキーペアの一つであるプライベートキー(秘密鍵)を SSH クライアントに配置します。

ここでは、~/.ssh 配下に pem形式の秘密鍵(test-keypair.pem)を配置しています。

[user@almalinux ~]$ ls -la .ssh/
total 12
drwx------. 2 user user  72 Aug  8 05:34 .
drwx------. 4 user user 123 Aug  8 05:34 ..
-rw-------. 1 user user 270 Aug  8 05:10 known_hosts
-rw-r--r--. 1 user user  95 Aug  8 05:10 known_hosts.old
-rw-------. 1 user user 387 Aug  7 21:24 test-keypair.pem
[user@almalinux ~]$

配置した秘密鍵(text-keypair.pem)のパーミッションを変更しておきます。ここでは、所有者のみの読み取り権限を付与します。

[user@almalinux ~]$ chmod 400 ~/.ssh/test-keypair.pem 
[user@almalinux ~]$
[user@almalinux ~]$ ls -la ~/.ssh/
total 12
drwx------. 2 user user  72 Aug  8 05:34 .
drwx------. 4 user user 123 Aug  8 05:34 ..
-rw-------. 1 user user 270 Aug  8 05:10 known_hosts
-rw-r--r--. 1 user user  95 Aug  8 05:10 known_hosts.old
-r--------. 1 user user 387 Aug  7 21:24 test-keypair.pem
[user@almalinux ~]$

SSH クライアントから配置したプライベートキーを使用して EC2 インスタンスへ接続します。正常であれば、下記のように EC2 インスタンスへSSHでリモート接続が成功します。

[user@almalinux ~]$ sudo ssh -i ~/.ssh/test-keypair.pem ec2-user@ec2-パブリック IPv4 DNS
   ,     #_
   ~\_  ####_        Amazon Linux 2023
  ~~  \_#####\
  ~~     \###|
  ~~       \#/ ___   https://aws.amazon.com/linux/amazon-linux-2023
   ~~       V~' '->
    ~~~         /
      ~~._.   _/
         _/ _/
       _/m/'
Last login: Tue Aug  8 09:35:49 2023 from 121.94.190.228
[ec2-user@ip-**-**-**-** ~]$

EC2 インスタンスのキーペアのもう一つであるパブリックキー(公開鍵)は、EC2 インスタンスの ~/.ssh 配下にauthorized_keysとして配置されています。

[ec2-user@ip-**-**-**-** ~]$ ls -la ~/.ssh/
total 4
drwx------. 2 ec2-user ec2-user 29 Aug  8 01:55 .
drwx------. 3 ec2-user ec2-user 95 Aug  8 02:00 ..
-rw-------. 1 ec2-user ec2-user 94 Aug  8 01:55 authorized_keys
[ec2-user@ip-**-**-**-** ~]$