Ich habe eine SSH-Verbindung mit Portweiterleitung eingerichtet, mit der Remote-Hosts wie folgt eine Verbindung zu den lokal weitergeleiteten Ports herstellen können:
ssh -g -L 5115:localhost:5115 <server>
Die Verbindung funktioniert einwandfrei, obwohl folgende Fehlermeldung angezeigt wird:
bind: Adresse wird bereits verwendet
Ich erhalte diese Nachricht, egal welche Ports ich wähle. Ich frage mich, warum ich diese Nachricht erhalte, obwohl die Verbindung einwandfrei zu funktionieren scheint. Mache ich etwas falsch?
-g
ermöglicht Remote-Hosts die Verbindung zu einem weitergeleiteten Port. 'localhost' weist es an, an eine IP zu binden, die von einem Remote-Host nicht erreicht werden kann. Ändern Sie localhost in die IP-Adresse des lokalen Systems (nicht 127.0.0.1) und sehen Sie, was Sie erhalten.
ssh
durch strace
und einen Blick auf den letzten syscalls vor der Fehlermeldung haben: strace -o ssh.strace ssh -g -L 5115:localhost:5115 <server>
. Beenden Sie ssh
die Verbindung, sobald die Verbindung hergestellt ist, und sehen Sie sich die Datei an ssh.strace
.
-L cport:shost:sport
ist der Host, mit dem der Server für Tunnelverbindungen spricht. Das Client- Ende lauscht standardmäßig auf Loopback (127.1), wodurch nur Prozesse auf localhost eine Verbindung herstellen können. -g
bewirkt, dass stattdessen ANYADDR (0 oder :: 0) abgehört wird, wodurch auch Remote-Prozesse möglich sind. Alternativ können Sie vier Teile angeben : -L cbind:cport:shost:sport
. Wenn -L cport:cIP:sport
dies funktionieren würde, würde der Datenverkehr vom Client zum Server verschlüsselt und dann direkt an den Client zurückgesendet, wodurch die beabsichtigte Sicherheit zerstört würde.
netstat --inet --inet6 -nlp | grep 5115
?