Ich möchte von zu Hause aus auf den ssh-Port meines Office-Linux-Hosts zugreifen. Leider befindet sich der Host hinter einem NAT-Router. Daher ist die IP-Adresse nicht öffentlich verfügbar. Es besteht jedoch Zugriff auf einen anderen Internet-Host (Server), der leider nur Nicht-Root-Zugriff hat. Nach einer Weile der Suche finde ich keine passende Lösung.
Folgendes Setup:
- Office-PC (Linux, Root-Zugriff) hinter NAT (IP nicht öffentlich), aber voller Internetzugang.
- Server-PC (Linux, kein Root-Zugriff) statische und öffentliche IP und vollständiger Internetzugang.
- Heim-PC (Linux, Root-Zugriff) hinter NAT (IP nicht öffentlich), aber voller Internetzugang.
Mögliche Verbindungen: Office PC -> Server <- Home PC
Nicht möglich: Office-PC <-X- Server -X-> Heim-PC
Weder der Home-PC noch der Server können den Zugriff auf den Office-PC initiieren. Sowohl der Office-PC als auch der Home-PC können jedoch Verbindungen zum Server herstellen.
Reverse-SSH-Tunnel nicht möglich: Ich habe eine Methode namens Reverse-SSH-Tunnel ausprobiert. Leider erfordert dies, dass GatewayPorts auf dem Server in / etc / ssh / sshd_config auf "yes" gesetzt ist, wobei ich keinen Root-Zugriff habe.
Grundsätzlich sollte es möglich sein:
0) Auf dem Server starte ich ein Userspace-Programm, das auf 2 Ports lauscht (1 eingehender, 1 ausgehender)
1) Auf meinem Büro-PC führe ich ein anderes Programm aus, das eine TCP-Verbindung zum ausgehenden Port des Servers offen hält.
2) Von zu Hause aus verbinde ich mich mit dem eingehenden Port des Servers.
Hierfür sollte es eine Standardlösung geben.
Was ist die schnellste und sauberste Lösung, um dieses Problem zu lösen?
Frank
Antworten:
Später:
Was Sie tun könnten, ist Folgendes: In Schritt 1 leiten Sie einen Remote-Port vom Büro-PC an den Server weiter (
12345
wird als Beispiel verwendet, sollte jeder Port> 1024 tun). Wenn Sie jetzt eine Verbindung zu 12345 auf dem Server herstellen, sollten Sie eine Verbindung zu Port 22 auf dem OfficePC herstellen.In Schritt 2 leiten Sie den Port 23456 von Ihrem Heimcomputer an 12345 auf dem Server weiter (von wo aus er an officepc: 22 weitergeleitet wird, wie in Schritt 1 eingerichtet).
In Schritt 3 stellen Sie mit Ihrem Office-PC-Login eine Verbindung zum lokalen Port 23456 her . Dies wird in Schritt 2 an den Port 12345 auf Ihrem Server und in Schritt 1 an Ihren Büro-PC weitergeleitet.
Beachten Sie, dass ich autossh für die Weiterleitungen verwende, da es sich um einen SSH-Wrapper handelt, der den Tunnel automatisch wieder verbindet, wenn er getrennt wird. aber normales ssh würde genauso gut funktionieren, solange die verbindung nicht unterbrochen wird.
Es gibt eine mögliche Sicherheitsanfälligkeit: Jeder, der eine Verbindung zu localhost: 12345 auf dem Server-PC herstellen kann, kann jetzt eine Verbindung zu officepc: 22 herstellen und versuchen, sich darin zu hacken. (Beachten Sie, dass Sie einen SSH-Server auf jeden Fall oberhalb der standardmäßig aktivierten grundlegenden Schutzfunktionen sichern sollten. Ich empfehle, mindestens die Root-Anmeldung und die Kennwortauthentifizierung zu deaktivieren - siehe z. B. diese )
Bearbeiten : Ich habe dies mit der gleichen Konfiguration überprüft, und es funktioniert.
GatewayPorts no
Betroffen sind nur die Häfen, die weltweit geöffnet sind, nicht die lokalen Tunnel. Dies sind die weitergeleiteten Ports:In Bezug auf den Netzwerkstack handelt es sich also ausschließlich um lokalen Datenverkehr auf den jeweiligen Loopback-Schnittstellen (plus SSH- Verbindungen zum Server-PC). wird daher überhaupt
GatewayPorts
nicht geprüft.Es gibt jedoch die Anweisung
AllowTcpForwarding
: Wennno
dies der Fall ist , schlägt dieses Setup fehl, da überhaupt keine Weiterleitung zulässig ist, auch nicht über die Loopback-Schnittstelle.Vorsichtsmaßnahmen :
bei Verwendung von autossh und den letzten ssh, können Sie ssh verwenden
ServerAliveInterval
undServerAliveCountMax
für den Tunnel nach oben zu halten. Autossh hat eine eingebaute Prüfung, aber anscheinend hat es einige Probleme mit Fedora.-M0
Deaktiviert dies und-oServerAliveInterval=20 -oServerAliveCountMax=3
prüft, ob die Verbindung hergestellt wurde. Versuche alle 20 Sek., wenn der Verbindungsaufbau dreimal hintereinander fehlschlägt, stoppt ssh (und autossh erstellt eine neue):Es kann nützlich sein, den SSH-Tunnel neu zu starten, wenn die Weiterleitung fehlschlägt. Verwenden Sie dazu
-oExitOnForwardFailure=yes
- Wenn der Port bereits gebunden ist, erhalten Sie möglicherweise eine funktionierende SSH-Verbindung, aber keinen weitergeleiteten Tunnel.Verwenden
~/.ssh/config
für die Optionen (und Ports) ist ratsam, sonst werden die Befehlszeilen zu ausführlich. Zum Beispiel:Dann können Sie nur den Server-Alias verwenden:
quelle
GatewayPorts no
auf die geöffneten Ports auf die Loopback-Schnittstelle ein; Beachten Sie, dass Sie in Schritt 2 über die Loopback-Schnittstelle weiterleiten (in der Tat sind beide Weiterleitungen "nur localhost"), sodass dies möglicherweise funktioniert (AllowTcpForwarding no
in der sshd-Konfiguration würde dies zu einem Defekt führen).GatewayPorts no
; hat die Antwort bearbeitet. Beachten Sie, dass es andere Anweisungen (wiePermitOpen
undAllowTcpForwarding
) gibt, die dieses Setup beschädigenWenn Sie von zu Hause aus und vom internen Server zum Linux-Computer im Büro sshen können, können Sie von zu Hause aus das ssh verwenden
ProxyCommand
, um übernc
(netcat) unbemerkt über den Server zum internen Computer zu springen.Dann werden Sie nur
ssh user@internalpc
und Sie werden stillschweigend durch den Server weitergeleitet, ohne dass Ports oder Tunnel an beiden Enden geöffnet werden müssen.quelle
Installieren Sie Robo-TiTO auf dem Computer, auf den Sie remote zugreifen möchten.
Die folgenden Installationsanweisungen sind veraltet, da die Site verschoben wurde. Die neue URL lautet https://github.com/formigarafa/robotito
quelle
CLIENT_PASSPHRASE = "logmein"
, im Klartext gesichert . Das ist buchstäblich null Sicherheit - Sie machen ein Loch in Lkw-Größe, in das jeder eintreten kann. Im Gegensatz zur SSH-Authentifizierung mit öffentlichem Schlüssel: Ich authentifiziere über einen sicheren Kanal mit Anmeldeinformationen, die nicht einmal die Leitung kreuzen. Wer schützt jetzt ihren Computer?Die Lösung von Piskvor funktioniert und ist nett. Es lässt jedoch die Terminals offen, während die Login-Shells hängen. Nicht sehr cool.
Ich habe dieses kleine Skript, das ich geschrieben habe, immer verwendet, um eine Verbindung zu einem Server herzustellen und die Verbindung aufrechtzuerhalten, indem ich es in cron ausführe:
Ich wette, wir könnten Piskvors Lösung mit dem eleganteren Autossh neben vielleicht einem abgetrennten Bildschirm reparieren oder die -NT-ssh-Argumente verwenden, um die Verbindung einfach im Hintergrund aufrechtzuerhalten.
quelle
homepc
Computer erfordern ).Für mich klingt es so, als ob Sie anstelle eines SSH-Tunnels ein VPN ausprobieren sollten: die Art, bei der ein externer Server als Proxy verwendet wird, z. B. Hamachi . Es gibt andere kostenlose Software wie diese, aber Hamachi ist mein Favorit.
quelle
5.0.0.0/8
Netzwerk öffentliche IPv4-Adressen zugewiesen wurden, ist Hamachi in Schwierigkeiten (wenn Hamachi ausgeführt wird, können Sie nicht auf einen zufälligen Teil des Internets zugreifen). Außerdem kann Hamachi nicht mehr kostenlos verwendet werden.