it-swarm.com.de

SSH zu Heimcomputern

Ich habe zuhause mehrere Computer, auf die ich von der Schule aus mit SSH und VNC zugreifen möchte. Dafür habe ich ihnen statische IPs gegeben:

  • 192.168.1.50: Windows
  • 192.168.1.51: Ubuntu
  • 192.168.1.52: Raspberry Pi/Raspbian

Ich weiß, dass SSH Port 22 verwendet, sodass ich diesen Port auf meinem Router an 192.168.1.51:22 weiterleiten kann. Auf diese Weise kann ich jedoch keine SSH-Verbindung zu meinem Raspberry Pi herstellen. Kann ich dies so einstellen, dass auf beide Computer zugegriffen werden kann?

21
acourchesne

Wenn Sie IPv6 haben, brauchen Sie nicht einmal eine Portweiterleitung! Holen Sie sich einfach Ihre permanente IPv6-Adresse (basierend auf Ihrer MAC-Adresse, damit diese garantiert gleich bleibt, es sei denn, Ihr ISP weiß nicht, wie IPv6 funktioniert) und verwenden Sie diese zum Tunneln. Da Ihre IPv6-Adresse öffentlich zugänglich ist und die Welt erlaubt Um auf Sie zuzugreifen, ohne Ihr lokales NAT zu durchlaufen, müssen Sie die Portweiterleitung nirgendwo aktivieren. Es wird "einfach funktionieren".

Beachten Sie jedoch, dass IPv6 global immer noch nicht wirklich unterstützt wird und dass sowohl Ihre Heim-Internetverbindung als auch Ihre Remote-Internetverbindung voll funktionsfähiges IPv6 benötigen, um dies zu tun.

Wenn Sie jedoch wie die meisten Menschen sind und nur IPv4 haben, gibt es immer noch einen Weg! Bei einigen Routern können Sie bestimmte Quellports an bestimmte Zielports weiterleiten, z.

enter image description here

In diesem Beispiel wird Port 22 direkt an meinen Computer sheepdog übergeben, während Port 292 an Port 22 auf coyote weitergeleitet wird.

Wenn Ihr Router nicht über diese Funktion verfügt, können Sie den Port einfach ändern, da SSH nicht nur auf Port 22 ausgeführt werden kann. Sie können es auf alles einstellen, was Sie wollen (das wird nicht verwendet).

In /etc/ssh/sshd_config (zum Bearbeiten benötigen Sie root, also Sudo nano /etc/ssh/sshd_config) befindet sich oben in der Datei eine Zeile:

# What ports, IPs and protocols we listen for
Port 22

Ändern Sie dies nach Ihren Wünschen:

# What ports, IPs and protocols we listen for
Port 2992

Starten Sie den SSH-Server mit Sudo service ssh restart neu und leiten Sie den Port am Router weiter.


Für diesen Anwendungsfall würde ich jedoch in Betracht ziehen, ob SSH-Tunnel das Richtige sind. Vielleicht sollten Sie einen dedizierten VPN-Server in Ihrem Heimnetzwerk einrichten? Auf diese Weise können Sie von überall auf Ihr gesamtes Heimnetzwerk zugreifen, sofern Sie über die für das VPN erforderlichen Sicherheitsinformationen verfügen. Darüber hinaus ist der Aufwand für ein VPN etwas geringer. Normalerweise müssen Sie nur einen Port für eine Maschine weiterleiten.

32
Kaz Wolfe

Eine einfache Möglichkeit, dieses Problem zu lösen, besteht darin, verschiedene Ports Ihres Routers dem Port 22 Ihrer Computer zuzuordnen. Sie können beispielsweise die folgenden Einstellungen in Ihrem Router vornehmen (vorausgesetzt, Ihr Router hat die IP-Adresse 1.2.3.4).

1. 1.2.3.4:22   --> ubuntu:22
2. 1.2.3.4:8888 --> raspberrypi:22
3. 1.2.3.4:9999 --> windows:22 (or some other port)

Wenn Sie dann ssh verwenden, geben Sie den Port an, den Sie verwenden möchten, indem Sie Folgendes eingeben

$ ssh <username>@<router ip> -p <your port>

Jetzt sollten Sie in der Lage sein, eine Verbindung zu allen Ihren Maschinen herzustellen.

19
Liu Siyuan

Wenn Sie wissen, dass einer Ihrer Computer immer in Betrieb ist, haben Sie auch die Möglichkeit, ihn als SSH-Proxy zu verwenden.

nehmen wir an, Sie haben einen Domainnamen für Ihre externe IP-Adresse eingerichtet (z. B. myhome.dyndns.com oder was auch immer). Sie verbinden sich auf einem Computer (sagen wir, Himbeere ist immer aktiv und Sie leiten den Port von Ihrem Router an weiter it), werden die Ihre SSH-Verbindungen sein:

schule -> (Router, hier transparent) -> Himbeere -> Ubuntu oder Windows

fügen Sie jetzt in Ihrer ~/.ssh/config in der Schule die folgenden Zeilen hinzu:

Host ubuntu 192.168.1.51
    Hostname ubuntu (change to match your setup)
    User myraspberryuser  (change it ;-) )
    IdentityFile ~/.ssh/id_rsa   (The path to your private key, on the school computer, better on an usb key if public computer)
    ForwardAgent yes
    RequestTTY yes
    ProxyCommand ssh -W %h:%p %[email protected]

So verbinden Sie sich:

ssh-add ~/.ssh/id_rsa # to do only once per session
ssh [email protected] (login without password)

Wenn Sie ab jetzt ssh ubuntu eingeben, stellt der Computer zuerst eine Verbindung zur Himbeere her und startet dann eine ssh-Sitzung mit dem Ubuntu-Computer.

Ich empfehle Ihnen, unabhängig von dem Port, den Sie weiterleiten möchten, das Kennwort in /etc/sshd.conf zu deaktivieren, damit Sie sich nur über den SSH-Schlüssel anmelden können. Auf diese Weise müssen Sie, wenn Sie den Schlüssel auf der Himbeere und auf Ubuntu mit dem Parameter 'ForwardAgent' einrichten, nur den Schlüssel entsperren, und dann ist kein Kennwort erforderlich, um eine Verbindung herzustellen. Auf diese Weise können sich Bots, auch wenn sie versuchen, sich bei Ihrem SSH anzumelden, niemals anmelden, da Sie die Anmeldung mit dem Kennwort nicht zulassen.

Bonus, dies funktioniert auch mit scp, scp foo ubuntu:/tmp/foo verwendet das gleiche Setup ohne weitere Parameter. Bonus 2, dieses Setup erfordert keine Änderung zu Hause, wenn Sie und ein anderer Computer morgen einfach den Code in Ihre SSH-Konfiguration kopieren/einfügen, den Host und die IP ändern, das wars, Sie müssen keinen neuen Port auf dem Router öffnen

11
potens

Ich mache das - ich lasse das RPI hoch und stecke es die ganze Zeit direkt in den Router (da es das billigste ist, um es auszuführen) und ssh einfach hinein und hüpfe dann von dort zu den anderen - es braucht nie viel Aufmerksamkeit.

Es ist auch möglich, eine grafische Benutzeroberfläche über eine SSH-Pipe per VNC/RDP zu übertragen, ein bisschen Spaß zu haben oder einen Port weiterzuleiten, über den Sie zu einem Server auf Ihrem Desktop-Computer navigieren können, während dieser privat bleibt.

Der Grund, warum ich diese Antwort hinzugefügt habe, ist, dass wir Ihnen einige Vorschläge geben.

1) Verwenden Sie einen anderen Port als 22. Sie können den Port 22 auf dem PI belassen, aber den eingehenden Port Ihres Routers auf etwas über 10.000 ändern. Andernfalls werden Sie Dutzende bis Hunderte von Angriffen pro Tag erhalten - und dies einmal Es ist bekannt, dass Sie einen SSH-Host ausführen, sobald ein Exploit gefunden wird.

2) Verwenden Sie Zertifikate anstelle von Benutzername/Passwort - deaktivieren Sie die Anmeldung mit Benutzername/Passwort vollständig.

3) Wenn sich Ihre IP-Adresse ändern kann, verwenden Sie einen Dienst vom Typ dyndns, um sich ein DNS-Hosthame zu beschaffen das pi jetzt). Es gibt noch einige andere Unternehmen, die dies kostenlos anbieten.

4) Halten Sie Ihr pi (oder was auch immer Sie in ssh) auf dem neuesten Stand (Sudo apt-get update). Ich glaube, dass ssh mittlerweile ziemlich gut geprüft ist, aber ich habe auch geglaubt, dass https ...

4
Bill K

Hatte Zweifel, ob dies besser als Kommentar als als Antwort passen würde, aber ich werde es trotzdem hier posten.

Einige Dinge, über die Sie nachdenken sollten, bevor Sie dies tun:

  1. Sie öffnen Ihre Systeme für das Internet, stellen Sie also sicher, dass sie ordnungsgemäß gepatcht sind und Ihre Sicherheitskonfiguration stabil ist (z. B. lassen Sie keine Root-Anmeldung zu und verwenden Sie Pubkeys anstelle von Passwörtern).
  2. Ihre öffentliche IP-Adresse (siehe whatismyip.com) kann sich je nach ISP täglich oder fast nie ändern. Dies bedeutet, dass Sie einen Weg finden müssen, um Ihre öffentliche IP herauszufinden. Sie können whatismyip.com täglich von Ihrem Heimnetzwerk aus besuchen, eine App erstellen oder Dynamic DNS (DynDNS) verwenden, um Ihre sich ändernde öffentliche IP-Adresse einem statischen Domainnamen zuzuordnen.
  3. Wenn Sie IPv6 verwenden möchten, um alle Probleme im Zusammenhang mit IPv4 und NAT zu umgehen, benötigen Sie Ihre Geräte, Router, ISP usw., um auch IPv6 zu kommunizieren. Es gibt einige Dienste, die Ihnen helfen können, wenn Ihr ISP IPv6 nicht unterstützt, Ihre Geräte und Ihr Router dies jedoch trotzdem tun müssen.
  4. Je mehr Ports und Geräte Sie für das Internet öffnen, desto größer wird Ihr Angriffsbereich. Ich würde vorschlagen, eine Jump-Box in Ihrem Netzwerk zu verwenden und nur SSH-Zugriff auf dieses Gerät aus dem Internet zuzulassen. Die Jump-Box wäre im Grunde ein sehr gehärtetes System, das Sie über Ihren Router an das Internet weiterleiten. Sobald Sie eine Verbindung zu dieser Box hergestellt haben, können Sie über sie eine SSH-Verbindung zu Ihrem internen Netzwerk herstellen. Die Jump-Box könnte im Grunde ein anderer Raspberry Pi sein. Ich würde vorschlagen, ein dediziertes Gerät zu verwenden, um es so gut wie möglich abzusichern (unter anderem, indem so wenig Dienste wie möglich ausgeführt werden).
  5. (4a) Anstelle einer Jump-Box, in die Sie SSH haben, können Sie auch einen VPN-Server einrichten, mit dem Sie in der Schule von Ihrem Gerät aus in Ihrem Heimnetzwerk surfen können (sofern ausgehende VPN-Verbindungen zulässig sind).
3
BlueCacti