Wie kann ich Port-Forwarding in initramfs durchführen?

478
ceremcem

Ich kann dropbear in das initramfs installieren und erfolgreich eine Verbindung zu diesem SSH-Server (IP:) im Bootstadium herstellen my_initramfs_ip, wie hier beschrieben .

Jetzt möchte ich eine Portweiterleitung als Client in derselben Phase durchführen. Zu diesem Zweck habe ich dropbear ssh client ( dbclient) in das initramfs installiert. Um zu überprüfen, ob es richtig funktioniert, habe ich versucht, eine Verbindung zu einem meiner Server innerhalb des initramfs herzustellen:

initramfs# dbclient user@myserver user@myserver password: ... 

Was perfekt funktioniert und ich mich einloggen kann myserver. Jetzt möchte ich eine Portweiterleitung durchführen, genau wie normalerweise, wenn das eigentliche System hochfährt:

initramfs# dbclient -R 1234:localhost:22 myserver_ip 

Der Port-Forward funktioniert jedoch einfach nicht, wenn ich versuche, eine Verbindung herzustellen:

myserver$ ssh root@localhost -p 1234 

mit dem Fehler:

ssh_exchange_identification: read: Connection reset by peer 

Wie kann ich also die Portweiterleitung im Bootstadium vornehmen?

Bearbeiten:

Ich habe versucht, die Bibliotheksdateien hinzuzufügen, die dbclientgeöffnet werden, während eine erfolgreiche Reverse-Port-Weiterleitung in das initramfs durchgeführt wird, nur für den Fall:

myserver$ strace dbclient -R 7000:localhost:22 user@1.1.1.1 2>&1 | grep open | grep lib | sed 's/open("//' | sed 's/",.*//' user@1.1.1.1's password:  /lib/x86_64-linux-gnu/libutil.so.1 /lib/x86_64-linux-gnu/libz.so.1 /lib/x86_64-linux-gnu/libc.so.6 /lib/x86_64-linux-gnu/libnss_compat.so.2 /lib/x86_64-linux-gnu/libnsl.so.1 /lib/x86_64-linux-gnu/libnss_nis.so.2 /lib/x86_64-linux-gnu/libnss_files.so.2 

... aber es gibt keinen Erfolg.

0
Begründung: Wenn ich mein Betriebssystem auf einer LUKS-Partition (Zielmaschine) installiere, muss ich die Festplatte über das Netzwerk über SSH entsperren, wie [hier beschrieben] (https://gist.github.com/ceremcem/53fd10092b5e82ed1dba5d3011ac54c6). Das Problem ist, dass für die SSH-Verbindung eine Portweiterleitung in der Remote-Firewall erforderlich ist, damit ich meine Zielmaschine verbinden kann. Ich möchte, dass mein Ziel eine Verbindung herstellt und seinen SSHD-Port auf einem Server speichert, sodass ich mein Ziel über meinen Server verbinden kann. Dadurch entfällt die Anforderung zur Portweiterleitung. ceremcem vor 6 Jahren 0
Ich habe versucht, die Frage zu vereinfachen, indem ich den zusätzlichen "nc" -Experimentteil entfernte, sodass es jetzt einfach eine Portweiterleitungsfrage ist. ceremcem vor 6 Jahren 0
Ja das ist der Fall. Das schwierige an der Sache ist, dass `... -R 1234: localhost: 22` immer noch nicht funktioniert, selbst wenn Sie das` lo`-Interface einrichten, aber `... -R 1234: 127.0.0.1: 22` funktioniert, wenn` lo `ist auf. Erwägen Sie, Ihren Kommentar in eine Antwort zu kopieren? ceremcem vor 6 Jahren 0

1 Antwort auf die Frage

1
Kamil Maciorowski

Die Loopback-Schnittstelle ist am initramfsHost möglicherweise nicht aktiv . Vielleicht brauchen Sie nur

ifconfig lo up 

(Inspiriert von dieser Antwort auf Unix und Linux SE ).