Einrichten von SSH über das Internet auf meinem Pi

16

Dies mag eine einfache Frage sein, aber da ich widersprüchliche Informationen aus verschiedenen Quellen gelesen habe (welche? Widersprüche im Internet?), Wollte ich wissen, ob ich alles getan habe, was ich tun sollte.

Ich möchte also eine SSH-Verbindung zu meinem RasPi einrichten, damit ich über das Internet darauf zugreifen kann.

  1. Zunächst aktivierte ich SSH auf dem Pi, indem ich Raspbian mit dem raspi-configTool ausführte .
  2. Dann habe ich den no-ip.com-Client auf meinem Pi installiert, damit ein Hostname auf meine dynamische IP-Adresse zeigt.
  3. Ich habe meine LAN-IP auf meiner Himbeere mit nachgeschlagen ifconfig
  4. Schließlich habe ich im Konfigurationsdienstprogramm meines Routers unter Portweiterleitung die Weiterleitung von Port 22 in TCP und UDP an die lokale IP meines Pi aktiviert.

Danach kann ich nicht mehr über das Internet zu meinem Pi SSH. Es funktioniert, wenn ich versuche, über meine lokale IP-Adresse eine Verbindung in meinem LAN herzustellen, aber nicht über meinen Hostnamen oder meine Internet-IP-Adresse. Ich habe auch versucht, eine Verbindung von einem anderen Standort herzustellen, und es funktioniert nichts.

Meine Frage: Vermisse ich irgendwelche Schritte? Gibt es Konfigurationsdateien, die ich auf meinem Pi bearbeiten sollte, damit alles funktioniert?

Zeta
quelle
Bitte geben Sie die Ausgabe von iptables -Lauf Ihrem Pi an.
deed02392
1
Haben Sie dieses Problem bereits behoben? Wenn ja, können Sie die gelöste Antwort markieren oder eine Selbstantwort erstellen, die angibt, was Sie getan haben, und diese dann als Antwort markieren? Das wäre großartig, da wir versuchen, die Seite Q: A zu verbessern, und diese Frage scheint für eine Weile von Ihnen @Zeta unbeantwortet geblieben zu sein. Vielen Dank!
RPiAwesomeness
Ich verwende no-ip.com, um eine Verbindung zu meinem Pi über das Internet für Web und SSH herzustellen. Ist es also möglich, dass Ihr Router oder ISP den eingehenden Datenverkehr blockiert?
Alastair Montgomery
Das klingt nach einem Router, der kein NAT-Loopback unterstützt.
Flakeshake
Ich habe diesen Link gefunden: raspberryanywhere.com Vielleicht kann es eine Hilfe sein. Ich benutze den Service seit mehreren Wochen und es funktioniert großartig! Der Link bietet einem einfachen Software-Teamviewer die Möglichkeit, überall auf Ihr Himbeer-Board zuzugreifen. Darüber hinaus können Sie Ihren üblichen SSH-Client verwenden. Sie stellen lediglich eine virtuelle Adresse bereit, um über SSH oder HTTP eine Verbindung zu Ihrem Board herzustellen. Es lohnt sich auf jeden Fall einen Versuch!
Stefano Stefano

Antworten:

12

Wenn Sie nur vorhaben, eine Verbindung zu Ihrem Raspberry Pi über SSH über das Internet herzustellen, ist ngrok.com möglicherweise am besten für Ihr Problem geeignet.

Es leitet Ihre Ports mit einer Art umgekehrten Tunnel weiter und kann sogar dabei helfen, Firewalls oder Einschränkungen Ihres Internetdienstanbieters zu umgehen. Sie müssen sich (kostenlos) auf der Site registrieren, um den TCP-Verkehr weiterzuleiten.

Ich bin in keiner Weise mit diesem Projekt verbunden. Ich habe es nur verwendet, um genau die gleiche Idee zu verwirklichen (in meinem Fall das Weiterleiten eines OpenVPN-Servers) und bin bisher auf keine Probleme gestoßen.

Slubbix
quelle
Ich hatte gerade dieses Problem auch und benutzte serveo.net sogar einfacher als ngrok. Völlig kostenlos, 0 config einfach den 22-Port-Befehl mit einem benutzerdefinierten Alias ​​einfügen und dann verbinden.
Madhava Jay
3

Ein Teil Ihres Problems könnte sein, dass der Pi eine dynamische IP vom DHCP auf Ihrem Router verwendet und die von Ihnen eingerichtete Portweiterleitung nicht funktioniert, da sich die lokale IP des Pi geändert hat.

Die einfachste Möglichkeit, dies zu beheben (zumindest, was ich gesehen habe), besteht darin, eine statische IP-Adresse einzurichten. Es ist relativ einfach, solange es Ihnen nichts ausmacht, in einer Konfigurationsdatei herumzuspielen. Hier und hier können Sie etwas ausführlicher lesen . Ich werde auch den einfachen Weg unten erklären:

  1. Stellen Sie eine Verbindung zu Ihrem Pi her, entweder über SSH in Ihrem Heimnetzwerk oder über einen Bildschirm, der funktioniert.

  2. Nimm einen Stift und etwas Papier, du wirst einige Informationen aufschreiben.

  3. Führen Sie den Befehl aus ifconfig. Ich weiß, dass Sie es bereits ausgeführt haben, aber wir müssen diesmal ein wenig mehr Informationen über Ihre lokale IP sammeln. Dies zeigt die Router-Informationen an, das gewünschte Bit ist nach eth0 (der Ethernet-Verbindung). . . .

    eth0      Link encap:Ethernet  HWaddr b8:27:eb:b3:fc:2c
              inet addr:192.168.1.81  Bcast:192.168.1.255  Mask:255.255.255.0
    

    Notieren Sie die folgenden Informationen ...

    inet addr – 192.168.1.81 (Pi's Current IP Address)
    Bcast –  192.168.1.255 (The Broadcast IP Range)
    Mask –  255.255.255.0 (Subnet Mask Address)
    

    Offensichtlich unterscheiden sich Ihre Informationen von diesem Tutorial. Verwenden Sie daher unbedingt die Informationen aus dem ifconfigauf dem Pi ausgeführten Befehl.

  4. Jetzt laufen netstat -nroder route -n. Wir brauchen:

    'Gateway'- Adresse - 192.168.1.254
    ' Ziel'- Adresse - 192.168.1.0

  5. Nachdem wir diese Informationen haben, können wir die Interface-Datei bearbeiten, um die dynamische IP einzurichten. Rennen sudo nano /etc/network/interfaces. Es sollte ungefähr so ​​aussehen:

    Interface-Datei

  6. Ändern Sie die Zeile:

    iface eth0 inet dhcp
    

    zu

    iface eth0 inet static
    

    Dann geben Sie direkt unter dieser Zeile Folgendes ein ( Bitte beachten Sie. Sie benötigen Ihre eigenen Adressen, die wir oben gesammelt haben ). . . .

    address 192.168.1.81
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.254
    

    Grundsätzlich ist der Adressenteil das, was Ihre IP sein soll. Je höher desto besser, desto geringer ist die Wahrscheinlichkeit von IP-Konflikten. netmask - Die 'Mask'-Adresse, die wir zuvor notiert haben.

    Netzwerk - Die IP-Adresse des Routers. Dies ist die 'Ziel'-Adresse, die zuvor gefunden wurde. Sie können dies auch von Ihrem Router nehmen, es sollte irgendwo auf der Seite stehen.

    broadcast - Die 'Bcast'-Adresse, die wir zuvor notiert haben.

    gateway - Dies ist die 'Gateway'-Adresse, die wir zuvor gefunden haben.

    Drücken Sie Ctrl+ Ound entweder Enteroder Yund dann Enter. Sobald Sie dies getan haben, drücken Sie Ctrl+ X.

  7. Führen Sie sudo rebootund Ihre IP sollte vorhanden sein! Melden Sie sich erneut an und führen Sie den ifconfigBefehl erneut aus. Jetzt sollte er so aussehen:

    Fantasie!

Konfigurieren Sie dann Ihre Portweiterleitung auf Ihre neue statische IP, und alles sollte funktionieren! Viel Glück!

RPiAwesomeness
quelle
2
Könnte die Person, die abstimmt, erklären, warum? Ich denke, das ist eine absolut gültige und praktikable Lösung. Ich würde gerne wissen warum, damit ich meine Antwort verbessern kann.
RPiAwesomeness
1
Dies funktioniert nur im lokalen Netzwerk und nicht von außen. OP fragte, wie man sich über das Internet und nicht über dasselbe Netzwerk mit Pi verbindet.
Chinmay Sarupria
Eine Adresse wie 192.168.1.100 ist eine lokale Adresse, ich könnte 2 Pi's in 2 verschiedenen Teilen der Stadt mit der gleichen lokalen Adresse haben. Daher kann ich von außerhalb des Netzwerks nicht auf beide zugreifen.
Chinmay Sarupria
Wenn Sie Ihrem RPi eine statische IP-Adresse zuweisen, sollten Sie ihn aus dem DHCP-Pool ausschließen, da er sonst möglicherweise von einem anderen Gerät in Ihrem Netzwerk abgerufen wird und ein IP-Konflikt auftritt.
Dmitry Grigoryev
2

Das einzige, was Sie anscheinend falsch konfiguriert haben, ist, dass SSH ein reines TCP-Protokoll ist, sodass Sie den UDP-Verkehr nicht an Port 22 weiterleiten müssen.

Nun, warum es nicht zu funktionieren scheint, liegt wahrscheinlich daran, dass Ihr Router kein NAT-Loopback unterstützt . Dies bedeutet, dass die NAT-Regeln (wie die Weiterleitungsregeln) nicht gelten, wenn der Ursprung der Verbindung in Ihrem internen LAN liegt. Nicht bei allen Routern ist diese Funktion aktiviert. Wenn Ihr Router kein NAT-Loopback unterstützt, können Sie unter Verwendung des Domänennamens no-ip.com und in Ihrem LAN keine Verbindung mit Ihrem RPi über SSH herstellen .

Um zu überprüfen, ob Ihre Konfiguration funktioniert, ob Sie ein Smartphone mit einer Datenverbindung (3G, LTE usw.) haben und ob sich ein ssh-Client darauf befindet, versuchen Sie, eine Verbindung zu Ihrem RPi über den Datenplan und nicht über Ihre WLAN-Verbindung herzustellen. Wenn Sie keinen ssh-Client haben und Tethering ausführen dürfen, verwenden Sie Ihr Smartphone zusammen mit einem Ihrer Computer, indem Sie den Stecker für Ihr lokales Netzwerk abziehen und stattdessen den Tethering-Link verwenden.

Huygens
quelle
0

Verwenden Sie einen kostenlosen Domainnamen, z. B. " co.cc" oder einen ähnlichen Namen, und " freeDNS" (sie bieten auch eine große Auswahl an Subdomains an), um auf Ihren Router zu verweisen. Ich denke, Sie können auch ein Update-Skript erhalten, falls Ihr Router eine dynamische IP hat.

Wenn das nicht funktioniert, sind vielleicht die Einstellungen für Ihre Portweiterleitung falsch? Was für einen Router hast du?

Samadi
quelle
Try using a free domain name...Das hat er getan, das ist der No-IP-Client. Es ist viel einfacher, als sich mit manuellem DNS und Routern herumschlagen zu müssen.
RPiAwesomeness
@ RPiAwesomeness Sorry, das wusste ich nicht.
Samadi
Kein Problem. Ich habe nur meine Pflicht getan, ein Stack Exchange-Mitglied zu sein und die Website zu moderieren. Es ist nur ein bisschen hilfreiche Kritik. Bitte nehmen Sie es nicht als Angriff auf Sie, ich versuche nur, den Inhalt dieser Website nützlich und informativ zu halten. Bitte versuchen Sie weiterhin, zu helfen und Fragen zu beantworten, und seien Sie dabei. Sie werden beginnen, es zu verstehen. :) Kommen Sie auch von Zeit zu Zeit in den Chat. Die Menschen, die in ihrer Nähe sind, lieben es, Gesellschaft zu haben, und es zeigt, dass diese Seite nützlich und erfolgreich ist und eine gute, involvierte Nutzerbasis hat.
RPiAwesomeness
0

Ich habe diese Situation hier in Finnland: rpi ist mit dem mobilen WLAN-Router huawei e5776 verbunden, und ich möchte mit SSH über das Internet eine Verbindung zu rpi herstellen. Bisher ist dies erfolglos. Schließlich weiß ich, dass mein Internetdienstanbieter Zwei-Wege-Verbindungen blockiert mobile Breitbandkunden. Für sie ist der bidirektionale Verkehr ein zusätzlicher Dienst (für den Sie bezahlen müssen), der von meinem ISP als offenes Tor bezeichnet wird. Besuchen Sie also Ihre eigene ISP-Site, um zu prüfen, ob dies der Fall ist.

Stunden
quelle
0

Slubbix wies auf ein mögliches Problem hin, dass die lokale IP-Adresse des Raspberry Pi nicht festgelegt ist. Dies würde die Portweiterleitung in Ihrem Router unzuverlässig machen. Standardmäßig ist der Raspberry Pi für die Verwendung von DHCP konfiguriert. Dies bedeutet, dass die IP vom Router vergeben wird. Diese IP ist standardmäßig auch nicht festgelegt.

Eine Lösung für dieses Problem wird bereits von Slubbix angezeigt : die IP des Raspberry Pi zu reparieren .

Meiner Meinung nach hat dies zwei Nachteile: Es gibt keine globale Liste von IPs in Ihrem Netzwerk, die einfach zu pflegen ist, und Sie können Ihren Raspberry Pi nicht in einem anderen Netzwerk verwenden (IP bereits verwendet oder andere Submaske).

Daher schlage ich Folgendes vor: Konfigurieren Sie Ihren Router so, dass der MAC-Adresse Ihres Raspberry Pi eine feste IP zugewiesen wird. Die MAC-Adresse kann mit dem Befehl ermittelt werdenifconfig

Wouter van der Put
quelle
0

Die lokale IP-Adresse Ihres Raspberry Pi ist nicht festgelegt, es sei denn, Sie verwenden einen WLAN-Adapter, der die IP-Adresse beibehält. Wenn Sie SSH für das RPI verwenden möchten, können Sie die folgenden Schritte ausführen:

Starten Sie Ihren Pi zur Terminal-Eingabeaufforderung. Geben Sie den folgenden Befehl ein: "sudo apt-get install xrdp" Wenn Sie dazu aufgefordert werden, geben Sie Ihr Kennwort ein (die Standardeinstellung ist "Himbeere"). Geben Sie "Y" ein und drücken Sie die Eingabetaste. Dies installiert nun xrdp auf Ihrem Pi. Dies ist die Software, die wir für die Remotedesktopverbindung verwenden werden. Warten Sie, bis der Vorgang abgeschlossen ist. Starten Sie Ihren Pi neu. Wir werden überprüfen, ob xrdp automatisch gestartet wird. Wenn Ihr Pi über die Eingabeaufforderung gebootet wurde, suchen Sie nach [ok] Starting Remote Desktop Protocol server: xrdp sesman. Dies zeigt Ihnen, dass xrdp beim Start Ihres Pi installiert ist und automatisch startet. Der letzte Schritt besteht darin, die IP-Adresse Ihres Pi zu notieren, die auch auf dem Startbildschirm angezeigt werden soll. In meinem Fall unten ist es 192.168.1.9.

Zweites Maschinen-Setup

  1. Starten Sie die Remotedesktopverbindung unter Start-> Alle Programme-> Zubehör-> Remotedesktopverbindung
  2. Geben Sie die IP-Adresse für Ihren Pi ein, die Sie oben notiert haben.

  3. Klicken Sie auf Verbinden (in diesem Stadium wird möglicherweise eine Sicherheitswarnung angezeigt. Klicken Sie in diesem Fall auf OK. Schließlich ist es Ihr Pi in Ihrem Netzwerk, sodass Sie sich keine Sorgen um die Sicherheit machen müssen.)

  4. Lassen Sie das Modul auf der Standardeinstellung von sesman-Xvnc und geben Sie Ihren Benutzernamen und Ihr Passwort für Ihren Pi ein. (Die Standardeinstellung ist pi und himbeer, wenn Sie sie nicht geändert haben.)

  5. Klicken Sie auf OK und nach ein paar Augenblicken sollten Sie auf dem Desktop Ihres Raspberry Pi begrüßt werden!

  6. Wenn Sie fertig sind, melden Sie sich einfach vom Pi-Desktop ab.

Ich habe diesen Schritt von hier aus gefunden und sie haben für mich gearbeitet

Hier ist eine andere Möglichkeit, SSH zu verwenden:

SSH in Raspberry Pi Im Allgemeinen logge ich mich über SSH oder Secure Shell in meinen Raspberry Pi ein, um ihm den vollständigen Namen zu geben. Dies ermöglicht den Befehlszeilenzugriff auf Ihren Raspberry Pi von einem anderen Computer aus. Obwohl es von überall auf der Welt möglich ist, SSH in den Raspberry Pi zu integrieren, wird in diesem Beitrag nur der SSH-Zugriff über das lokale Netzwerk behandelt. Ich werde in einem zukünftigen Blog-Post auf die Fernverbindung eingehen.

Obwohl dies keinen Zugriff auf eine grafische Benutzeroberfläche (GUI) ermöglicht, kann ich mit dem Zugriff auf die Befehlszeile im Allgemeinen 95% meiner Aufgaben ausführen. Die anderen 5% könnte ich wahrscheinlich durch SSH machen, aber manchmal ist der Komfort einer GUI nicht zu übertreffen. :-)

Zunächst müssen Sie die IP-Adresse des Raspberry Pi kennen, bei dem Sie sich anmelden möchten. Wenn Sie sich nicht sicher sind, wie Sie dies finden, lesen Sie meinen Blog-Beitrag, in dem erklärt wird, wie Sie dies mithilfe eines hervorragenden Tools namens nmap aus der Ferne tun können.

Es ist sehr einfach, von einem Linux- oder Apple Mac-Computer aus eine SSH-Verbindung zu Ihrem Raspberry Pi herzustellen. Sie können einfach Ihren Benutzernamen und Ihre IP-Adresse in die Befehlszeile eingeben und dabei folgendes Format verwenden:

SSH-Benutzername @ IP-Adresse

Stellen Sie sicher, dass Sie den Benutzernamen durch den Benutzernamen ersetzen, mit dem Sie sich beim Remotecomputer anmelden möchten. Die IP-Adresse sollte das Format 192.168.1.66 haben

Möglicherweise wird eine Meldung angezeigt, in der Sie darüber informiert werden, dass die Authentizität des Hosts nicht festgestellt werden kann, und wenn Sie sicher sind, dass Sie die Verbindung fortsetzen möchten. Diese Meldung wird nur angezeigt, wenn Sie zum ersten Mal SSH auf Ihrem Raspberry Pi ausführen. Einfach yes eingeben.

Sie werden dann nach Ihrem Passwort gefragt. Geben Sie das Passwort für den Benutzernamen ein, mit dem Sie sich verbinden möchten.

Für Windows ist dies etwas schwieriger einzurichten, da eine zusätzliche Software namens PuTTY erforderlich ist. Einmal installiert, ist dies jedoch sehr einfach zu bedienen.

Rufen Sie zunächst die PuTTY-Website www.putty.org auf, laden Sie die Software herunter und installieren Sie sie.

Nach der Installation laden Sie PuTTY

Geben Sie unter Hostname (oder IP-Adresse) die IP-Adresse ein, zu der Sie eine Verbindung herstellen möchten. Aktivieren Sie das Optionsfeld SSH. Geben Sie in das Feld unter Gespeicherte Sitzungen einen Namen ein, um diesen Computer zu identifizieren, z. B. Raspberry Pi, und klicken Sie dann auf Speichern. Klicken Sie auf Öffnen, um Ihre SSH-Sitzung zu starten.

Wenn Sie das nächste Mal in Ihren Raspberry Pi SSH möchten, müssen Sie nur PuTTY laden, auf die gespeicherte Sitzung klicken, um sie zu markieren, und dann auf Öffnen klicken. Nachdem Sie Ihr Passwort eingegeben haben, haben Sie bei Aufforderung Fernzugriff auf Ihren Raspberry Pi.

Ich habe diese Anleitung hier gefunden

Mensch
quelle
Ich verstehe nicht, wie diese Anweisungen beim Zugriff auf das RPi über das Internet
Dmitry Grigoryev
0

Eine Sache, die mir für mein Internet aufgefallen ist, ist, dass wenn ich meinen Webserver per Portweiterleitung versuche, eine Verbindung mit meiner öffentlichen IP-Adresse herzustellen, dies bedeutet, dass er nicht verfügbar ist, aber wenn ich über mein Telefon oder mein Schulnetzwerk eine Verbindung herstelle Ich kann eine Verbindung herstellen. Sie könnten auch versuchen, auf Google zuzugreifen und "IP" in die Suchleiste einzugeben, die angegebene IP zu kopieren und dann auf Google zu übersetzen und in Ihre IP einzufügen Klicken Sie dann im rechten Fenster auf die blaue IP-Adresse. Daraufhin sollte angezeigt werden, ob Sie Ihren Webserver erfolgreich weitergeleitet haben.

Österreichmächtig
quelle
0

Um eingehenden Datenverkehr auf dem Standard-SSH-Port (22) zuzulassen, können Sie iptables anweisen, den gesamten TCP-Datenverkehr auf diesem Port zuzulassen.

sudo iptables -A INPUT -p tcp --dport ssh -j ACCEPT

Zurück zu der obigen Liste, können Sie sehen, dass dies iptables sagt:

  1. Hängen Sie diese Regel an die Eingabekette ( -A INPUT) an, damit wir den eingehenden Datenverkehr untersuchen können
  2. Überprüfen Sie, ob es sich um TCP ( -p tcp) handelt.
  3. Überprüfen Sie in diesem Fall, ob die Eingabe an den SSH-Port ( --dport ssh) gesendet wird .
  4. Wenn ja, akzeptieren Sie die Eingabe ( -j ACCEPT).

Hoffentlich funktioniert das auch für Sie. Vielleicht möchten Sie die FTP-Ports hinzufügen, die zwischen 20 und 21 liegen. Ändern Sie einfach den Wert sshin 20und 21.

Österreichmächtig
quelle
0

Ich bin nicht sicher, ob diese Frage zusätzliche Antworten benötigt, aber es ist ganz einfach.

  1. Installieren Sie OpenSSH oder aktivieren Sie es von raspi-config

  2. Gehen Sie zu Ihrer Router / Firewalls-Homepage in meinem Fall 192.168.1.1

  3. Suchen Sie nach Portweiterleitungen oder virtuellen Servern und fügen Sie Folgendes hinzu:

    Externer Port Start: 1234 Externes Port Ende: 1234

    Interner Port Start und Ende 22.

    Server IP ist die statische IP Ihres RPi in meinem Fall 192.168.1.50

  4. Sobald alles auf der Routerseite eingerichtet ist, notieren Sie sich Ihre WAN-IP, indem Sie bei Google nach Ihrer IP suchen.

  5. Nun solltest du in der Lage sein, über das Internet auf das Pi zu sshen. In meinem Fall verwende ich ein Chromebook und das Secure Shell Add-On. Ich gebe den Benutzernamen in meinem Fall pi@mywanipund Port 1234 ein.

Grundsätzlich leitet die Firewall-Regel in Schritt 3 den gesamten Datenverkehr auf dem WAN-IP-Port 1234 an den internen LAN-IP-Port 22 weiter.

Hani Umer
quelle
-1

Ich hatte viel Mühe, SSH über das Internet einzurichten, bis ich diese einfache Methode fand:

http://raspctl.com

Einfach registrieren und die Befehle kopieren und einfügen. Möglicherweise müssen Sie eine Konfigurationsdatei bearbeiten, aber das war's. Ich habe es heute getestet und es funktioniert wie Charme. Ich habe es auch mit verschiedenen SSH-Android-Apps versucht.

alkopop79
quelle
Vergessen zu erwähnen: Stellen Sie die Portweiterleitung auf Ihrem Router ein!
alkopop79
1
Zu Ihrer Information: Dieses Projekt wurde offenbar eingestellt.
Bobstro