2016-09-27 4 views
0

Docker 1.12.1を使用して、私はssh -Rで作成されたホストポートにアクセスしようとして奇妙な動作に直面します。コンテナからホストポートにアクセスする(ssh -Rとバインドする)方法は?

基本的には、サーバー上で動作しているドッカーコンテナからローカルマシンのポート12345上で実行されているサービスにアクセスしようとしています。

ssh -R *:12345:localhost:12345 [email protected]とssh接続を開いて、12345serverに開き、ローカルマシンのポート12345に転送しました。私は(172.17.42.1がドッキングウィンドウコンテナからのドッキングウィンドウのホストにアクセスするためにIPである)容器の内部curl https://172.17.42.1:12345をしようとすると、

は今、私が取得:

[email protected]:/# curl https://172.17.42.1:12345 
curl: (7) Failed to connect to 172.17.42.1 port 12345: Connection refused 

しかしserverコマンドcurl http://localhost:12345には、例えば(を成功していません。 接続は、私は本当にポートがウィットを行ってバインディング方法を理解していない

server$ curl http://localhost:12345 
curl: (52) Empty reply from server 

を拒否しました時間sshは(それが動作する)サーバ上ncとテストと異なります

# on server 
nc -l -p 12345 
# inside a container 
[email protected]:/# curl http://172.17.42.1:12345 
curl: (52) Empty reply from server 

はNB:コンテナがdocker run -it --rm maven:3-jdk-8 bashで開始されました。

コンテナがsshバインディングに対応するホストポートにアクセスできるようにするにはどうすればよいですか?

+1

yesまたはclientspecifiedGatewayPortsオプションを設定する必要がある唯一のlocalhostにバインドされている - あなたは '-Rを使用する必要があります'*:11443:server1:443''他のインターフェースでバインドするには – Petesh

+0

あなたの提案に感謝しますが、それは機能していないようです。私はまだカールを見ます:(7)172.17.42.1ポートへの接続に失敗しました11443:Connection refused –

+0

あなたの質問にあるもののレイアウトについてちょっと混乱しています。あなたが[コンテナの中からホストポートにアクセスする](http://stackoverflow.com/questions/31324981/how-to-access-host-port-from-docker-container)をしようとしているようなものですこの場合、答えが役に立ちますが、私は100%確実ではありません。 – Petesh

答えて

1
man sshから

-R [...]

...サーバのGatewayPortsのオプションが有効になっている場合にのみ成功するリモートbindするアドレスを指定

そして、 man sshd_config

GatewayPorts

リモートホストがクライアントに転送されたポートに接続することを許可するかどうかを指定します。デフォルトでは、sshd(8)はリモートポート転送をループバックアドレスにバインドします。これにより、他のリモートホストが転送されたポートに接続できなくなります。 GatewayPortsを使用すると、sshdがリモートポート転送を非ループバックアドレスにバインドできるようにすることで、他のホストが接続できるようにすることができます。リモートポート転送を強制的にローカルホストのみに、強制的にリモートポート転送をワイルドカードアドレスにバインドする場合は「いいえ」、クライアントにはアドレスの選択を許可する場合は「clientspecified」転送はバインドされています。 デフォルトは "no"です。

これは、デフォルトのsshdサーバーインストールでは、ローカルインターフェイスにバインドする転送のみを作成できることを意味します。あなたが他のインターフェイスに転送できるようにしたい場合は、ループバック、その後、あなたは、SSH -Rで開かれたデフォルトのポートで、あなたの/etc/ssh/sshd_config

+0

ありがとう! NB sshサービスは、 '/ etc/ssh/sshd_config'の変更後に' sudo service ssh restart'で再起動する必要があります –

+0

もう1つ注意してください: 'clientspecified'はより良いオプションです。ワイルドカードアドレスにバインドされるよう明示的に要求します。 Whit 'yes'バインドアドレスを指定しないすべてのフォワードは、ワイルドカードアドレスにバインドされています。 – mata

関連する問題