ローカルホストへの[[TCP]]ポート接続を、[[SSH]]接続を利用してリモートマシンの[[TCP]]ポートへ転送する機能。 ## コマンド ```bash ssh -L <接続元>:<接続先> <トンネルサーバー> -N ``` ## 具体例 ローカルマシンから`mysql-server:3306`では接続できないが、tunnel-serverからなら`mysql-server:3306`で接続できる[[MySQL]]があるとする。[[MySQL]]クライアントなどを使ってローカルマシンから直接接続したい場合は以下のようにSSHローカルポートフォワードを行う。 ```bash ssh -L 13306:mysql-server:3306 tuunel-server -N ``` これは以下のようなトンネルを構築するイメージ。 ![[2022-08-18_SSHローカルポートフォワード.png]] ローカルマシン以外からもトンネルを使用させたい場合は、`13306`を`<許可するIP>:13306`のように変更する。 > [!note] > `13306:mysql-server:3306`は`127.0.0.1:13306:mysql-server:3306`の省略形 ## トラブルシューティング - [[📝SSHローカルポートフォワーディングでDBにアクセスできない]] ## 参考 - [SSHローカルポートフォワードの覚え書き \- karakaram\-blog](https://www.karakaram.com/notes-on-ssh-local-port-forwarding/#:~:text=SSH%20%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%83%9D%E3%83%BC%E3%83%88%E3%83%95%E3%82%A9%E3%83%AF%E3%83%BC%E3%83%89%E3%81%A8%E3%81%AF%E3%80%81SSH%20%E3%81%AE%E6%8E%A5%E7%B6%9A%E3%82%92%E9%80%9A%E3%81%97%E3%81%A6,%E5%91%BC%E3%81%B0%E3%82%8C%E3%81%9F%E3%82%8A%E3%81%97%E3%81%BE%E3%81%99%E3%80%82)