SSH zu Heimcomputern

21

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, daher kann ich diesen Port auf meinem Router an 192.168.1.51:22 weiterleiten. 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?

acourchesne
quelle
10
Sie können verschiedene SSH-Ports verwenden. Ich weiß nicht, wie schwierig Windows ist, aber unter Linux ist es wirklich einfach , es in einen nicht-stardard-Port zu verwandeln . Auf diese Weise können Sie Port 22 an RaspberryPi weiterleiten, um die Maschine (ohne Änderungen dort) und den anderen (nicht standardmäßigen) Port zu gewinnen.
Bistro
2
@ Melebius, es ist alt, aber immer noch eine gute Lektüre. Der Schlüssel für mich ist: "Das grundlegende Argument, das ich versucht habe: Mach keine Sicherheit durch Dunkelheit." . Das heißt, er muss möglicherweise nicht die Ubuntu- oder Pi-Ports ändern, sondern leitet nur verschiedene Router-Ports an jeden 22-Maschinen-Port weiter.
Bistro
1
@bistoco Zustimmen. Das OP ist jedoch im Begriff, den SSH-Zugang zur Außenwelt freizulegen, und die Sicherheit muss in einem solchen Fall immer berücksichtigt werden. Das Festlegen verschiedener Ports auf den Computern löst das Problem des OP nicht, da er / sie verschiedene Ports (= Portweiterleitung) auf seinem / ihrem Router aktivieren muss / müssen.
Melebius
6
@ Melebius Off Topic, aber ich verwende niemals 22, nur weil automatisierte Bots nicht rund um die Uhr auf meinem Server ankommen. Es wird keinen echten Angreifer (oder ein gut geschriebenes Skript) fernhalten, aber es verringert die Anzahl meiner Protokolleinträge.
Kaz Wolfe
4
Sie können sich einfach mit einem von ihnen verbinden (dem, der öffentlich zugänglich ist) und dann über die lokale Adresse eine Verbindung zu den anderen herstellen.
Tkausl

Antworten:

32

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 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.

Bildbeschreibung hier eingeben

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

Wenn Ihr Router nicht über diese Funktion verfügt, können Sie den Port einfach ändern, da SSH nicht nur auf dem Port ausgeführt werden kann 22. 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 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 neu sudo service ssh restartund 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 aus 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.

Kaz Wolfe
quelle
2
Sie können einen IPv6-Tunnelbroker verwenden, um IPv6-Adressen abzurufen, wenn Ihr Internetdienstanbieter IPv6 nicht unterstützt.
André Borie
1
Mit "dieser Funktion" meinen Sie das Weiterleiten eines Ports an einen anderen Port?
Liu Siyuan
@LiuSiyuan Yep. Ich weiß, dass es seltsam ist, aber ich habe einige Router gesehen, die damit nicht umgehen können. Mein alter ISP-Router konnte es nicht einmal versuchen.
Kaz Wolfe
Ich verstehe den IPv6-Teil nicht ganz. Sollen wir davon ausgehen, dass alle ISPs, die IPv6-Adressen bereitstellen, für jedes Gerät im Netzwerk eine (konsistente) andere Adresse angeben?
jjmontes
1
@jjmontes Wenn Ihr ISP kompetent ist, erhalten Sie eine volle / 64 (oder vielleicht weniger, aber immer noch genug, um jeder Maschine eine zuzuweisen)
Kaz Wolfe
19

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 verfügt über eine 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.

Liu Siyuan
quelle
11

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 myuser@ubuntu (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, es ist nicht nötig, einen neuen Port auf dem Router zu öffnen

Potens
quelle
Gibt es einen Nachteil bei der Verwendung einer Maschine als Zwischenstufe für SSH? Nehmen wir an, ich verwende meinen Raspberry Pi, um eine Verbindung zu anderen Computern im Netzwerk herzustellen. Beeinflusst die Leistung die Aufgabe?
Acourchesne
1
Ja, die Himbeere könnte den Durchsatz begrenzen, da sie als Server und Client dienen muss. Wenn Sie sicher genug sind, können Sie mit SSH-Tunneln dasselbe Ergebnis erzielen. Auf diese Weise fungiert die Himbeere nur als Server, aber Ihr Schul-PC muss zwei Clients ausführen.
Potens
4

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 ...

Bill K
quelle
3

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 gut 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 mit dieser Box verbunden sind, 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).
BlueCacti
quelle