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多段接続できます。