SSH ポートフォワーディングとは
ポートフォワーディングとは、IPネットワーク上のある機器が、自らのIPアドレスのTCPやUDPの特定のポート番号への通信を、別のアドレスの特定のポートへ自動的に転送すること。また、ネットワーク機器などの持つそのような機能。
SSHの機能を用いて外部の機器との間で暗号化された通信経路を用意することを特にSSHポートフォワーディングという。
localhost にアクセスすると AWS の EC2 を踏み台にして RDS にアクセスする。みたいなことができるらしい。
通信経路を確立した状態で、
通信経路確立$ ssh -fNC \ -L 13306:ssh-test-rds.xxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com:3306 \ -i ~/.ssh/wakuwaku-ssh-test.pem \ ec2-user@xxx.xxx.xxx.xxx
ローカルのポートにアクセスすると RDS にアクセスできる
通信経路確立時に利用したローカルホスト上のポートにアクセス$ mysql -usampleuser -psamplepass -h 127.0.0.1 --port=13306
転送の種類
ローカルポート転送
リモートポート転送
ローカルポート転送とは逆に、リモートサーバーからローカルサーバーにSSHトンネルを確立する
インターネット上にないサーバーにSSHトンネルを「引き込む」場合などに利用されます。
ダイナミックポート転送
ローカルサーバーのSOCKSプロキシからSSHサーバーを経由し、他のサーバーと通信を行うことができる仕組み。SSHサーバーの固定IPアドレスを送信元IPアドレスとしてローカルサーバーで利用したい場合などに利用されます。
ローカルポート転送を試す
AWS の環境を構築
- public サブネットに EC2 インスタンスを作成
- ssh で接続できることを確認
- private サブネットに RDS を作成
- EC2 の mysql クライアントからアクセスできることを確認
- ローカルからはもちろんアクセスできない
ssh -L 13306:database.xxxxxxx.ap-northeast-1.rds.amazonaws.com:3306 \
-i ~/.ssh/aws-handson-key.pem \
ec2-user@xxxxxxxxxx.ap-northeast-1.compute.amazonaws.com
mysql -uadmin -p -h 127.0.0.1 --port=13306
接続できた!!
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 26
Server version: 8.0.28 Source distribution
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>