PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SSH Reverse Tunnel funktioniert nur fast



Noether
16.05.16, 16:29
Ich habe einen SSH reverse Tunnel eingerichtet, aber der funktioniert nur fast:

Es funktioniert das passwortlose SSH und der Tunnel-Aufbau:

ssh -R 19999:localhost:22 user@server

oder auch

/usr/bin/autossh -R 19999:localhost:22 user@server

Aber das Verbinden funktioniert nicht:

ssh localhost -p 19999

bringt eine Passwortabfrage, zu der immer gemeldet wird "Permission denied (publickey,password)", obwohl das Passwort immer richtig eingegeben ist.

Nachdem mir das mit einem vServer passierte habe ich es auch mit drei Rechner im LAN getestet und musste feststellen das es schon im LAN nicht funktioniert!

Dabei steht in der sshd_config

GatewayPorts yes
GatewayPorts clientspecified

und nach netstat ist der Tunnel vorhanden.

Wieso kann ich das Tunnelende trotzdem nicht erreichen? :confused:

Noether
20.05.16, 00:22
Ich konnte das Rätsel lösen: Zu über 90 % wird in den Anleitungen angegeben

ssh localhost -p <port>

um zum Tunnel zu verbinden.
Es wird hierbei aber über den Tunnel zum anderen Rechner am Tunnel verbunden, also ein Login dort gemacht, und dort benötigt man den User-Namen des dortigen Users.
Es kann also nur funktionieren wenn die Namen zufälligerweise gleich sind, was nie der Fall sein sollte, da man weder ein Passwort noch einen User-Namen zweimal verwenden sollte.
Aber offenbar mißachten 90 % der Leute das und verschweigen es zusätzlich in den Anleitungen, so das man dann stundenlang rumräselt wieso das nicht funktioniert obwohl sonst alles funktioniert.

Da muss ich mich wohl anpassen und immer als Root arbeiten sowie mit leerem Passwort, zumindest beim Benutzen von Anleitungen.

fork
20.05.16, 00:44
ssh -p 19999 localhost

Versuche dochmal -v oder -vv für Prüfung zusätzlicher Debugging-Informationen. Ansonsten: Du versuchst Dich nicht etwa per root anzumelden? Das ist wahrscheinlich in der Konfiguration unterbunden. (Standardeinstellung ist bei allen halbwegs neuen Distributionen - vernünftigerweise - dass passwortbasierte Anmeldung per Root nicht erlaubt ist - Konfig-Option: PermitRootLogin without-password).

Primäres Logfile für Anmeldungen ist /var/log/auth.log (Von Deinem lokalen System!). Wenn Du ein Login bekommst, dann wird auch eine Anmeldung versucht und da muss etwas im Log stehen. Du kannst auch in /etc/ssh/sshd_config das Loglevel noch hochstellen.


Es kann also nur funktionieren wenn die Namen zufälligerweise gleich sind, was nie der Fall sein sollte, da man weder ein Passwort noch einen User-Namen zweimal verwenden sollte.

Da müssen keine remote-Benutzernamen mit lokalen identisch sein. Wenn Du Dich zum SSH-Port verbinden kannst, dann hast Du einen vollen Login und Du kannst Dich gemäss der SSH-Konfiguration anmelden. Du kannst einen Benutzernamen angeben mit -l oder user@, so wie man das bei SSH gewohnt ist.


Da muss ich mich wohl anpassen und immer als Root arbeiten sowie mit leerem Passwort, zumindest beim Benutzen von Anleitungen.

Vergiss das mal lieber komplett und sofort. Grober Unfug wäre noch viel zu milde ausgedrückt.

Ich selbst habe noch nie im Leben eine Anleitung gelesen, die so einen Wahnsinn empfiehlt oder voraussetzt.

---

Ich vermute Dein Verständnis für die Problematik ist noch nicht ausreichend. Das was Du versuchst, ist ein normales Remote-Portforwarding. Das funktioniert problemlos und ohne notwendige Workarounds, bei denen man Sicherheitslöcher aufreissen muss. Es gilt nur sich das Wissen anzueignen und ggf. das Debugging zu lernen, wenn's nicht klappt(Und das ist nicht immer einfach).

Deswegen nochmal rein zum Verständnis ein paar Fragen um das Verständnis für Dein Setup zu überprüfen, und Dir auch nochmal ein paar Debugging-Hilfen zu geben:


Du hast einen "Home-PC", von dem aus das Remote-Forwarding initiiert wird(lokaler SSH-Port hier: 22)
Du hast einen vserver, auf dem einen ein Port verfügbar sein soll(Port 19999), mit dem Du Dich, wenn eingeloggt auf deinen "Home-PC" verbinden willst.
netstat -nltp auf Deinem vserver zeigt auch einen listening-Port 127.0.0.1:19999 an?
Wenn Du Dich auf Deinem vserver mittels ssh -p 19999 user@localhost verbindest, dann siehst Du auch eingehende Pakete auf Deinem Home-PC mit tcpdump -i NETZWERKDEVICE -n dst port 22 and src host DEINE_VSERVER_IP?