SSHコマンドと秘密鍵を使用してAWSの踏み台サーバーから同VPC内のプライベートサーバー(今回はDBサーバーの1号機と2号機)へ多段認証する手順をメモ書きします。
当手順は、mac、Linuxからの操作を想定しています。
まず、ローカルの端末(mac、Linux)に秘密鍵(.pem)を配置します。
秘密鍵は踏み台サーバーのものを配置します。
秘密鍵の生成方法については、以下AWS公式サイトをご参照ください。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-key-pairs.html#having-ec2-create-your-key-pair
生成した秘密鍵をローカル端末の~/.ssh
の中に配置します。秘密鍵の名前はhimitu.pem
とします。
また、パーミションは400
と設定しておきます。
chmod 400 ~/.ssh/himitu.pem
次に~/.ssh
配下にconfig
ファイル(拡張子なし)を作成し、以下のように設定します。
このファイルは、踏み台サーバーからDBサーバー1号機またはDBサーバー2号機へ多段認証するように設定しています。
Host bastion
Hostname【踏み台サーバーのパブリックIPアドレス】
User centos-user
IdentityFile ~/.ssh/himitu.pem
Host DB1
Hostname 【DBサーバー1のプライベートアドレス】
User centos-user
IdentityFile ~/.ssh/himitu.pem
ProxyCommand ssh bastion -W %h:%p
Host DB2
Hostname 【DBサーバー2のプライベートアドレス】
User centos-user
IdentityFile ~/.ssh/himitu.pem
ProxyCommand ssh bastion -W %h:%p
Host
にはサーバーのエイリアス(別名)を設定します。
Hostname
にはサーバーのIPアドレスを設定します。
※ DB1、DB2のIPは踏み台サーバーからアクセスできるIPを設定する。
User
にはそのサーバーへ接続するためのユーザー名を設定します。
IndentitiyFile
には踏み台サーバーの秘密鍵を設定します。
※ DB1、DB2にも踏み台サーバーの秘密鍵を設定します。
ProxyCommand
には、経由する踏み台サーバーを設定します。
※ 踏み台サーバーには設定不要。踏み台から接続されるDB1、DB2に設定。
上記の例では
ProxyCommand ssh 踏み台サーバーのエイリアス -W %h:%p
と設定しています。踏み台サーバーのエイリアス(bastion)
の部分以外は、書き換え不要です。
※ Windowsの場合、ssh
部分はssh.exe
にします。
設定はこれで完了です。実際に接続するにはローカル端末で以下のコマンドを実行します。
ssh サーバーのエイリアス
DBサーバー1号機に接続する場合は、次のようなコマンドを実行すれば接続できます。
ssh DB1
これで、自動で踏み台サーバーを経由した上で、DBサーバー1号機に接続できます。
DBサーバー2号機も同様に以下のようにコマンドを実行すれば接続することができます。
ssh DB2