У меня следующая настройка:
[OpenSSH server] <---> [Docker container with SSH client] <---> [host machine]
Мой контейнер Docker — это своего рода менеджер подключений SSH. Служба, запущенная на сервере OpenSSH, порт которого я перенаправляю, является веб-сервером.
Изнутри контейнера я могу успешно curl
туннелировать порт. Однако, когда я пытаюсь опубликовать тот же порт на моем хосте и пытаюсь curl
с хоста, я получаю
curl: (56) Recv failure: Connection reset by peer
Вот команда SSH, которую я использую для настройки туннеля:
ssh -nNT -L 3000:*:9413 OPENSSH_SERVER_URL
Я запускаю этот контейнер с помощью
docker run --rm --name test -p 3000:3000 ssh-connection-manager
Если я войду в контейнер, то смогу curl
получить ответ:
docker exec -it --entrypoint sh test
# curl localhost:3000
Hello!
Я не могу сделать то же самое с хоста через опубликованный порт:
$ curl localhost:3000
curl: (56) Recv failure: Connection reset by peer
Что я упускаю? Подозреваю, что это опция подключения на клиенте SSH или конфигурация на моем сервере OpenSSH, но я не уверен.