나는 다음과 같은 설정을 가지고 있습니다 :
[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 서버의 구성인 것 같지만 확실하지 않습니다.