6
Help us understand the problem. What are the problem?
Organization

SSHポートフォワーディング

SSH ポートフォワーディングとは

ポートフォワーディングとは、IPネットワーク上のある機器が、自らのIPアドレスのTCPやUDPの特定のポート番号への通信を、別のアドレスの特定のポートへ自動的に転送すること。また、ネットワーク機器などの持つそのような機能。

SSHの機能を用いて外部の機器との間で暗号化された通信経路を用意することを特にSSHポートフォワーディングという。

localの8081番にアクセスするとremoteからアクセスできるtarget:80に繋げる例
image.png

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サーバーを経由し、オレンジ色のリモートサーバーへポート転送を行う
image.png

リモートポート転送

ローカルポート転送とは逆に、リモートサーバーからローカルサーバーにSSHトンネルを確立する
インターネット上にないサーバーにSSHトンネルを「引き込む」場合などに利用されます。
image.png

ダイナミックポート転送

ローカルサーバーのSOCKSプロキシからSSHサーバーを経由し、他のサーバーと通信を行うことができる仕組み。SSHサーバーの固定IPアドレスを送信元IPアドレスとしてローカルサーバーで利用したい場合などに利用されます。
image.png

ローカルポート転送を試す

AWS の環境を構築

image.png

  • 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>

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
6
Help us understand the problem. What are the problem?