GNU/Linux >> LINUX-Kenntnisse >  >> Linux

SSH-Zugriff auf den Bürohost hinter dem NAT-Router

[email protected]$ autossh -R 12345:localhost:22 [email protected]

Später:

[email protected]$ autossh -L 23456:localhost:12345 [email protected]

[email protected]$ ssh [email protected] -p 23456

Was Sie tun könnten, ist Folgendes:Leiten Sie in Schritt 1 einen Remote-Port vom Büro-PC an den Server weiter (12345 wird als Beispiel verwendet, jeder Port>1024 sollte ausreichen). Wenn Sie sich jetzt mit 12345 auf dem Server verbinden, sollten Sie mit Port 22 auf dem Büro-PC verbunden sein.

Leiten Sie in Schritt 2 den Port 23456 von Ihrem Heimcomputer an 12345 auf dem Server weiter (von wo er an officepc:22 weitergeleitet wird, wie in Schritt 1 eingerichtet)

In Schritt 3 verbinden Sie sich mit Ihrem Büro-PC-Login mit dem lokalen Port 23456 . Diese wird von Schritt 2 an Port 12345 auf Ihrem Server und von 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, falls er getrennt wird. normales ssh würde jedoch auch funktionieren, solange die Verbindung nicht abbricht.

Es gibt eine mögliche Schwachstelle:Jeder, der sich mit localhost:12345 auf serverpc verbinden kann, kann sich jetzt mit officepc:22 verbinden und versuchen, sich dort zu hacken. (Beachten Sie, dass Sie, wenn Sie einen SSH-Server betreiben, ihn sowieso über den standardmäßig aktivierten Basisschutz hinaus sichern sollten; ich empfehle zumindest, die Root-Anmeldung und die Passwort-Authentifizierung zu deaktivieren - siehe z. B. hier)

Bearbeiten :Ich habe dies mit der gleichen Konfiguration überprüft, und es funktioniert. GatewayPorts no betrifft nur die Ports, die für die ganze Welt offen sind, nicht lokale Tunnel. Dies sind die weitergeleiteten Ports:

homepc:
  outgoing ssh to serverpc:22
  listening localhost:23456 forwarded through ssh tunnel
serverpc:
  listening ssh at *:22
  incoming localhost ssh tunnel (from homepc) forwarded to localhost:12345
  listening localhost ssh tunnel (from officepc) forwarded from localhost:12345
officepc:
  outgoing ssh to serverpc:22
  incoming localhost through ssh tunnel (from serverpc) forwarded to localhost:22

Soweit es den Netzwerkstapel betrifft, handelt es sich also um den gesamten lokalen Datenverkehr auf den jeweiligen Loopback-Schnittstellen (plus SSH-Verbindungen zu serverpc); daher GatewayPorts wird überhaupt nicht überprüft.

Es gibt jedoch die Direktive AllowTcpForwarding :wenn das no ist , schlägt diese Einrichtung fehl, da überhaupt keine Weiterleitung zulässig ist, nicht einmal über die Loopback-Schnittstelle.

Warnhinweise :

  • Wenn Sie autossh und aktuelles ssh verwenden, möchten Sie vielleicht ServerAliveInterval von ssh verwenden und ServerAliveCountMax um den Tunnel am Laufen zu halten. Autossh hat eine eingebaute Überprüfung, aber anscheinend hat es einige Probleme mit Fedora. -M0 deaktiviert das und -oServerAliveInterval=20 -oServerAliveCountMax=3 überprüft, ob die Verbindung besteht - versucht es alle 20 Sekunden, wenn es 3x hintereinander fehlschlägt, stoppt ssh (und autossh erstellt eine neue):

    autossh -M0 -R 12345:localhost:22 -oServerAliveInterval=20 -oServerAliveCountMax=3 [email protected]
    
    autossh -M0 -L 23456:localhost:12345 -oServerAliveInterval=20 -oServerAliveCountMax=3 [email protected]
    
  • Es kann nützlich sein, den SSH-Tunnel mit -oExitOnForwardFailure=yes neu zu starten, wenn die Weiterleitung fehlschlägt - Wenn der Port bereits gebunden ist, erhalten Sie möglicherweise eine funktionierende SSH-Verbindung, aber keinen weitergeleiteten Tunnel.

  • mit ~/.ssh/config für die Optionen (und Ports) ist ratsam, sonst werden die Kommandozeilen zu ausführlich. Zum Beispiel:

    Host fwdserverpc
        Hostname serverpc
        User notroot
        ServerAliveInterval 20
        ServerAliveCountMax 3
        ExitOnForwardFailure yes
        LocalForward 23456 localhost:12345
    

Dann können Sie nur den Server-Alias ​​verwenden:

    autossh -M0 fwdserverpc

Wenn Sie von zu Hause aus per ssh auf den internen Server und vom internen Server auf Ihren Linux-Computer im Büro zugreifen können, können Sie von zu Hause aus den ssh ProxyCommand verwenden über nc lautlos durch den Server zum internen Rechner zu springen (netcat)

# ~/.ssh/config on your home machine:
Host internalpc 
   ForwardAgent yes 
   ProxyCommand ssh [email protected] exec nc internal.pc.example.com %p

Dann einfach ssh [email protected] und Sie werden stillschweigend durch den Server weitergeleitet, ohne dass an beiden Enden Ports oder Tunnel geöffnet werden müssen.


Installieren Sie Robo-TiTO auf dem Computer, auf den Sie remote über SSH zugreifen möchten.

  • Damit können Sie von überall aus über Google Talk-Client-Apps auf SSH zugreifen.
  • Es ist keine öffentliche IP-Adresse oder spezielle Einstellung erforderlich.
  • Es ist kostenlos und Open Source, es werden keine Anwendungsdienste mehr bezahlt.
  • Keine Notwendigkeit, den SSH-Port zu öffnen (schützen Sie Ihren Computer).
  • Es muss kein Tunneling geöffnet werden (z. B. VPN oder ähnliches)

Die folgenden Installationsanweisungen sind veraltet, da die Website umgezogen ist. Die neue URL lautet https://github.com/formigarafa/robotito

Ich habe ein Skript erstellt (getestet auf meinem Raspbian-Betriebssystem in Raspberry Pi), damit Sie Robo-TiTO einfach auf Raspberry Pi, Debian oder Ubuntu Box (Debian-Paketverteilung) installieren können. Dies sind die Schritte, um Ihr Linux zu erhalten Box fernsteuerbar:

  1. Öffnen Sie Shell Command oder Sie können es Terminal nennen, gehen Sie zu Ihrem Home-Ordner, Laden Sie das Installationsskript per Befehl herunter:

    $ wget https://opengateway.googlecode.com/files/robotito
    
  2. Führen Sie danach das Skript aus, indem Sie den Befehl eingeben:

    $ sudo ./robotito
    
  3. und dann können Sie die Datei credentials.rb bearbeiten aus dem Konfigurationsordner von Robo-TiTO mit Ihrem GTalk-Konto und speichern Sie es durch Drücken von Strg +X und Y . Standardmäßig wird der Nano-Editor verwendet.

  4. Ausführen des Robo-TiTO aus dem Robo-TiTO-Ordner per Befehl

    $ cd robotito
    $ ./jabbershd start
    
  5. Nachdem dies erledigt ist, können Sie SSH von jedem Google Talk-Client aus verwenden. Vergessen Sie nicht, das Robo-TiTO GTalk-Konto zu Ihrem Google Talk-Konto hinzuzufügen, und testen Sie es, indem Sie miteinander chatten, bevor Sie das Konto verwenden.


Linux
  1. So konfigurieren Sie benutzerdefinierte SSH-Verbindungen, um den Remotezugriff zu vereinfachen

  2. Ssh – Mehrere ähnliche Einträge in der Ssh-Konfiguration?

  3. ssh über einen Router ohne Portweiterleitung

  4. Rsync-Dateien über Zwischenhost

  5. VPN-Tunnel für den SSH-Fernzugriff

Wie wird Plesk Panel hinter einem Router mit NAT ausgeführt?

Beschränken Sie die SSH-Anmeldung auf eine bestimmte IP oder einen bestimmten Host

Verbindung zum Host localhost Port 22 herstellen:Verbindung abgelehnt

wie man zwei Computer hinter NAT und Firewall ssh, ohne dritten Computer

SSH:connect to host localhost port 22:Verbindung abgelehnt

Zugriff nur über SSH-Tunneling