" />

スポンサーリンク

AWS

SSHの設定ファイル(config)と踏み台サーバー経由でEC2インスタンスへSSH接続する方法

投稿日:

SSHの設定ファイル(config)

SSHの接続先などは~/.ssh/config(拡張子なし)に定義する。

Host bastion              # 設定の名前
	Hostname 3.112.XXX.69   # サーバーのIPアドレス
	User ec2-user           # ログインユーザー名  
	IdentityFile ~/.ssh/aws-keypair.pem # 秘密鍵ファイルのパス

上記のようにconfigを記述しておくと、SSHコマンドで次のように接続できる。

$ ssh bastion

わざわざ、ssh -i ~/.ssh/aws-keypair.pem ec2-user@52.69.XXX.113のようにコマンド実行する必要がなくなるため、非常に便利である。

踏み台経由でSSH接続する2つの方法

VPC上にサーバ構築する場合は、踏み台EC2インスタンスをパブリックサブネットに、WebサーバとなるEC2インスタンスはプライベートサブネットに設置する構成が一般的である。

そして、踏み台サーバ経由で、Webサーバに接続して各種設定を行うものである。

このとき、プライベートサブネットに置かれたWebサーバEC2インスタンスにどのようにSSH接続するかが問題となる。

・1つ目の方法が、ローカルPCから踏み台サーバへSSH接続し、踏み台サーバからWebサーバへ再度SSH接続する方法である。

この方法の問題点は、2度やる手間が発生することと、踏み台サーバへpemファイルを設置する必要があり、セキュリティ上よろしくないということである。

・2つ目の方法が、SSHの多段接続という機能を使うことである。

多段接続を使うことで、2度やる手間は省け、pemファイルはローカルPCにだけ置けば良くなるため、セキュリティ上の問題も解消できる。

以下で多段接続の方法を説明する。

SSHのconfigの多段接続の記述方法

ローカルPC→踏み台EC2→WebサーバEC2と多段接続するためのconfigの記述例を下記に示す。

# 踏み台用設定
Host bastion
	Hostname 3.112.XXX.YY
	User ec2-user
	IdentityFile ~/.ssh/aws-keypair.pem

# Webサーバ用設定
Host web01
	Hostname 10.0.XX.YY
	User ec2-user
	IdentityFile ~/.ssh/aws-keypair.pem
	ProxyCommand ssh bastion -W %h:%p

1つ目のポイントはHostnameには、踏み台から見たIPアドレスを指定するということである。ここでは、Webサーバ用EC2のプライベートIPv4アドレスを指定すれば良い。

ポイント2つ目は ProxyCommandである。
基本的には定型文として上記例でbastionとなっている箇所を、踏み台サーバのHostを設定すれば良い。
-W %h:%p は定型文であり、このように記載するものとして覚えれば良い。

上記のように記述した上で、WebサーバにSSH接続するには、
$ ssh web01
とコマンドを実行すれば良い。

$ ssh web01
Last login: Mon Jul 19 13:09:11 2021 from 10.0.14.XXX

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
16 package(s) needed for security, out of 18 available
Run "sudo yum update" to apply all updates.
[ec2-user@ip-10-0-XX-YY ~]$ 

このように、踏み台経由でWebサーバEC2にSSH多段接続できます。

スポンサーリンク

-AWS

Copyright© ノリックジオグラフィック for Webエンジニア , 2022 All Rights Reserved Powered by AFFINGER5.