Докер: ssh -L в контейнер докеров - в соединении отказано

У меня проблемы с тем, чтобы мой ssh-туннель работал для моего контейнера в кластере Docker Swarm.

ssh-соединение на моем локальном компьютере:

ssh -L 7180:test.XXX:7180 user@XXX

В моем Dockerfile на удаленном компьютере:

EXPOSE 7180

Начало контейнера:

docker -H test:2379 --tlsverify run -d -p 7180:7180 --net=my-net

Я попытался подключиться в Firefox через:

localhost:7180

К сожалению, соединение отклоняется на удаленном компьютере:

channel 3: open failed: connect failed: Connection refused

"docker container ls" выводит для портов следующее:

xxx:7180->7180/tcp

Внутри моего контейнера "netstat -ntlp | grep LISTEN" печатает:

tcp        0      0 0.0.0.0:7180            0.0.0.0:*               LISTEN      - 

Я новичок в этом, но после всего того, что я читал до сих пор, это действительно должно работать. Я использую "--net = my-net", потому что хочу настроить свою собственную сеть позже. У меня была такая же проблема с "--net = host". Что я делаю неправильно?


person AndroidStorm    schedule 29.07.2018    source источник
comment
Если ваш сервер XXX, можете ли вы проверить: ssh -L 7180:localhost:7180 user@XXX?   -  person wargre    schedule 29.07.2018
comment
Это приводит к тому же сообщению об ошибке.   -  person AndroidStorm    schedule 29.07.2018
comment
Я получаю ту же ошибку, когда использую динамическую переадресацию портов: ssh -D localhost: 7180 -f -C -q -N user @ XXX. В этом случае я настроил Firefox с прокси v5.   -  person AndroidStorm    schedule 29.07.2018
comment
Можете ли вы сделать netstat -ntlp | grep 7180 на своем сервере   -  person wargre    schedule 29.07.2018
comment
Я получаю: (Для -p: geteuid () = 9023 нельзя прочитать информацию, но вы должны быть пользователем root.) Я не являюсь пользователем root на этом хосте, я только в группе докеров.   -  person AndroidStorm    schedule 29.07.2018


Ответы (2)


Команда ssh должна быть такой:

ssh -L 7180:127.0.0.1:7180 user@XXX

А затем из браузера вы перейдете к:

http://127.0.0.1:7180

Я избегал использования localhost, потому что некоторые машины сопоставляют его с IPv6, даже если у вас не настроен IPv6.

При тестировании этого туннеля убедитесь, что ваше приложение прослушивает удаленный сервер, выполнив ssh для этого сервера и запустив команду curl непосредственно на сервере для вывода 127.0.0.1:7180. If it doesn't work there, you would repeat your debugging with netstat inside the container and verifying the port is published in thedocker ps`.

person BMitch    schedule 30.07.2018

Я получил это работает с

ssh -D localhost:7180 -f -C -q -N user@XXX

и используя

xxx:7180

в моем браузере (вместо localhost). localhost и --net = host у меня не работали с ssh -L.

person AndroidStorm    schedule 29.07.2018
comment
Если ваш браузер использует xxx:7180, вы вообще проходите через туннель ssh? Похоже, вы просто пошли прямо к хосту без туннеля. - person BMitch; 30.07.2018