LoginSignup
12
5

More than 5 years have passed since last update.

ホストでsshポートフォワーディングした先にDockerコンテナ内から接続する

Posted at

ホストでsshポートフォワーディングした先にDockerコンテナ内から接続する方法をまとめました。
この記事で利用する「ホスト」はDockerコンテナに対するホストを指します。

手順

1. ホスト側でlo0にエイリアスをはる

ホスト側
sudo ifconfig lo0 alias 10.200.10.10/24

上では、10.200.10.10としていますがプライベートipであればなんでも良いです。

2. ホスト側でsshポートフォワーディング

ホスト側
ssh -f -N -g -L 8080:localhost:80 リモートサーバ

今回は、リモートサーバの80番ポートをローカル(ホスト)の8080番ポートにバインディングします。
ココで重要なのは-gオプションです。Docker内からのホストへの接続時に、手順1で示したエイリアスへ接続します。この通信は外部からの接続とみなされてしまいます。そこで、外部からの接続に対応するために-gオプションが必要となります。詳しくはman ssh-gオプションを確認してください。

3. Dockerコンテナ内から接続

Docker内
curl 10.200.10.10:8080

手順1で貼ったエイリアスにDocker内からアクセスするとリモートサーバの80番ポートにつながります。

まとめ

上の方法で、ポート制限がなされたサーバなどにsshポートフォワーディング経由でDocker内から接続することができるようになります。もしもっといい方法があったら教えてください。

12
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
5