【AWS】踏み台サーバーを使って、プライベートサブネットにあるインスタンスへSSH接続をする

2024年8月1日AWS

aws

今回はAWSの踏み台サーバーを使って、プライベートサブネットへSSH接続をする方法の紹介です。

この記事は前提として以下の知識、手順などを理解している方向けになります。

  • VPCの知見
  • EC2の知見

それでは早速始めましょう

踏み台のパブリックサブネットのインスタンスにSSH接続する方法

EC2からパブリックインスタンスにチェックを入れます。
チェック後、接続を押下します。

sshクライアントタブの例に記載があるSSHから始まるコマンドになります。

カレントディレクトリを.sshへ

SSHクライアンドタブに記載の手順に沿って接続していきます。

現在のディレクトリを「.ssh」に移動します。

cd ~/. ssh

pemファイルの権限を変更する

pemファイルの権限を変更する

chmod 400 "ec2-vpc-only-key.pem"

パブリックサブネットのインスタンスにSSH接続する

パブリックサブネットのインスタンスにSSH接続する

ssh -i pemファイル名 ユーザー名@グローバルIP
icon

パブリックサブネットのインスタンスにSSH接続します。

ssh -i "ec2-vpc-only-key.pem" ec2-user@54.238.2.177

「ec2-user」がユーザー部分になりますので、間違えないように注意してください。

icon

以下のようにユーザーがSSH先に変更されていれば接続成功です。

全体のコードも見れて分かりやすいです。

kami@kami ~ % cd ~/.ssh
kami@kami .ssh % chmod 400 "ec2-vpc-only-key.pem"
kami@kami .ssh % ssh -i "ec2-vpc-only-key.pem" ec2-user@54.238.2.177

A newer release of "Amazon Linux" is available.
  Version 2023.3.20240304:
Run "/usr/bin/dnf check-release-update" for full release and version update info
   ,     #_
   ~\_  ####_        Amazon Linux 2023
  ~~  \_#####\
  ~~     \###|
  ~~       \#/ ___   https://aws.amazon.com/linux/amazon-linux-2023
   ~~       V~' '->
    ~~~         /
      ~~._.   _/
         _/ _/
       _/m/'
Last login: Wed Mar  6 15:17:55 2024 from 133.32.181.19
[ec2-user@ip-10-0-30-203 ~]$ 

秘密鍵をSSHの接続先へコピーする

SSHに接続ができたら、秘密鍵をSSHの接続先へコピーを行います。
(SSH接続前に行っても問題ありません)

scpコマンドを使ってSSHの接続先へ秘密鍵をコピーします。
※秘密鍵がパブリックとプライベートが一緒になってる場合に限ります。

scpのコマンド実行文

scp [オプション] [ソース] [宛先]

scpのコマンド実行例

scp -i 秘密鍵 送信するファイル名 ユーザー名@接続先のプライベートサーバー:送信するディレクトリ

接続する前に分かりやすく説明のために、パブリックサブネットのインスタンスの接続先の中身を見てみましょう。

秘密鍵が存在しないことを確認できたので、scpコマンドでコピーします。

[ec2-user@ip-10-0-30-203 ~]$ ls -la
total 16
drwx------. 3 ec2-user ec2-user  95 Mar  3 03:59 .
drwxr-xr-x. 3 root     root      22 Mar  2 06:57 ..
-rw-------. 1 ec2-user ec2-user 315 Mar  3 07:43 .bash_history
-rw-r--r--. 1 ec2-user ec2-user  18 Jan 28  2023 .bash_logout
-rw-r--r--. 1 ec2-user ec2-user 141 Jan 28  2023 .bash_profile
-rw-r--r--. 1 ec2-user ec2-user 492 Jan 28  2023 .bashrc
drwx------. 2 ec2-user ec2-user  48 Mar  3 02:05 .ssh
[ec2-user@ip-10-0-30-203 ~]$ client_loop: send disconnect: Broken pipe

scpのコマンド具体例

今回の例ではこちらのコマンドを叩けば、秘密鍵をSSHの接続先へコピーできます。

scp -i ec2-vpc-only-key.pem ec2-vpc-only-key.pem ec2-user@プライベートEC2のIP:/home/ec2-user

scpコマンドを正しく、実行できればpemファイルが最後尾に追加されているのがわかります。

[ec2-user@ip-10-0-30-203 ~]$ ls -la
total 20
drwx------. 3 ec2-user ec2-user  123 Mar  6 15:17 .
drwxr-xr-x. 3 root     root       22 Mar  2 06:57 ..
-rw-------. 1 ec2-user ec2-user  315 Mar  3 07:43 .bash_history
-rw-r--r--. 1 ec2-user ec2-user   18 Jan 28  2023 .bash_logout
-rw-r--r--. 1 ec2-user ec2-user  141 Jan 28  2023 .bash_profile
-rw-r--r--. 1 ec2-user ec2-user  492 Jan 28  2023 .bashrc
drwx------. 2 ec2-user ec2-user   48 Mar  3 02:05 .ssh
-rw-------. 1 ec2-user ec2-user 1674 Mar  6 15:17 ec2-vpc-only-key.pem

スポンサードサーチ

プライベートサブネットのインスタンスにSSH接続する方法

プライベートサブネットのインスタンスの接続先の確認

パブリックサブネットのインスタンス同様に、EC2からプライベートサブネットのインスタンスをチェックして、接続を押下します。

icon

ここからはパブリックとは異なるのでよく読んでください。

ここで違うのは、カレントディレクトリの変更は行いません。
踏み台なのでパブリックからプライベートへ接続を行います。
なので、ファイルの権限の変更と接続先のコピーをしておきます。

踏み出意を経由してプライベートサブネットのサーバーへ接続

ssh -i pemファイル名 ユーザー名@プライベートIP

以下のようにec2-userと表示があるように、パブリックインスタンスにSSH接続ずみの状態でSSH行います。

[ec2-user@ip-10-0-30-203 ~]$ ssh -i ec2-vpc-only-key.pem ec2-user@10.0.39.142
   ,     #_
   ~\_  ####_        Amazon Linux 2023
  ~~  \_#####\
  ~~     \###|
  ~~       \#/ ___   https://aws.amazon.com/linux/amazon-linux-2023
   ~~       V~' '->
    ~~~         /
      ~~._.   _/
         _/ _/
       _/m/'

接続できましたね。

以上で、踏み台サーバーを経由して、プライベートサブネットのサーバーへSSH接続する方法でした。

AWSAWS

Posted by kami