異なるEC2インスタンス間でssh接続する方法についてまとめていきます。
今回は同じサブネット(ネットワーク)内にあるインスタンスAからインスタンスBに接続するケースを想定しています。
→誤記がありました。正しくは「インスタンスB→Aに接続するケース」を想定しています!
やること
- インスタンスBの公開鍵を確認
- インスタンスAにインスタンスBの公開鍵を設置
- インスタンスBからインスタンスAにssh接続
インスタンスBの公開鍵を確認
ssh接続するためには接続先に接続元の公開鍵が設置されていないといけないので、まずインスタンスAに設置するインスタンスBの公開鍵を確認します。
(インスタンスB)
[ec2-B ~]$ cat ~/.ssh/id_rsa.pub ssh-rsa eriogaje4oirta5meca2rijaHo....................................
こちらをコピペ。
ちなみに、キーペアを別途作成する場合はこちらを参照。
※デフォルトではid_rsa
とid_rsa.pub
が作成されるので、既に存在するキーペアとファイル名が被らないようオプションによる指定が必要
インスタンスAにインスタンスBの公開鍵を設置
先ほどコピペしたインスタンスBの公開鍵をインスタンスAに設置します。
(インスタンスA)
# ここに設置 [ec2-A ~]$ vim /home/app_name/.ssh/authorized_keys
インスタンスBからインスタンスAにssh接続
鍵の設置が完了したので無事接続できるかどうか疎通確認をします。
(インスタンスB)
[ec2-B ~]$ ssh ec2-user@インスタンスAのIPアドレス Last login: Fri Oct 30 17:59:21 2020 from ************ __| __|_ ) _| ( / Amazon Linux AMI ___|\___|___| https://aws.amazon.com/amazon-linux-ami/2018.03-release-notes/ 97 package(s) needed for security, out of 137 available Run "sudo yum update" to apply all updates. [ec2-A ~]$
無事成功!
うまくいかないときは
うまく接続できない場合は以下のことを確認すると良さそうです
- インスタンスAのセキュリティグループでsshによる接続を許可しているか
- B→Aに接続する際にパブリックIPを使用していないか
インスタンスAのセキュリティグループでsshによる接続を許可しているか
そもそもこれができていないとローカルからインスタンスAにも接続できていないと思うのでレアケースだとは思いますが、「インスタンスAがsshによる接続を受け付けられる状態にあるか」を確認します
AWSコンソールのEC2インスタンス一覧画面から、該当のインスタンスを選択して「セキュリティ」のタブを確認
サービス一覧から「VPN」を検索し、メニューバーから「セキュリティグループ」で一覧を確認
インスタンスAに適用されているセキュリティグループのインバウンドルールを確認
ポート22が適用されていたら、sshによるインバウンド(入ってくる)接続が許可されているのでOK
B→Aに接続する際にパブリックIPを使用していないか
冒頭で説明した通り、今回は同じサブネット(ネットワーク)内にあるインスタンスAからインスタンスBに接続するケースを想定している。
同じネットワーク内の接続の場合はパブリックIPではなくプライベートIPを使用するので、
こっちを使用。
もしなんらかの理由でローカルネットワーク内でもパブリックIPでの接続をしたい場合は、セキュリティグループの設定で「ローカルネットワーク内の他のサーバーからパブリックIPへの接続が到着した場合も許可する」という条件を追加する必要がある。
参考
今回の内容は普段業務でやっていること+先輩から教えていただいたことになりますが、付随する知識に関してはこちらにお世話になりました。ありがとうございました。