
Ich habe folgendes Setup:
[OpenSSH server] <---> [Docker container with SSH client] <---> [host machine]
Mein Docker-Container ist eine Art SSH-Verbindungsmanager. Der Dienst, der auf dem OpenSSH-Server läuft, dessen Port ich weiterleite, ist ein Webserver.
Von innerhalb des Containers aus kann ich curl
den getunnelten Port erfolgreich aufrufen. Wenn ich jedoch versuche, denselben Port auf meinem Host zu veröffentlichen und curl
vom Host aus zu versuchen, erhalte ich
curl: (56) Recv failure: Connection reset by peer
Dies ist der SSH-Befehl, den ich zum Einrichten des Tunnels verwende:
ssh -nNT -L 3000:*:9413 OPENSSH_SERVER_URL
Ich betreibe diesen Container mit
docker run --rm --name test -p 3000:3000 ssh-connection-manager
Wenn ich mich beim Container anmelde, kann ich das curl
und erhalte eine Antwort:
docker exec -it --entrypoint sh test
# curl localhost:3000
Hello!
Das Gleiche kann ich vom Host aus nicht über den veröffentlichten Port tun:
$ curl localhost:3000
curl: (56) Recv failure: Connection reset by peer
Was übersehe ich? Ich vermute, es liegt an einer Verbindungsoption des SSH-Clients oder an einer Konfiguration auf meinem OpenSSH-Server, bin mir aber nicht sicher.