Comment utiliser SSH hors du réseau domestique

15

J'ai récemment configuré SSH sur mon Raspberry Pi. Cela va très bien, d'autant plus que je peux contrôler l'ordinateur via mon iPhone avec l'application Server Auditor . Malheureusement, cela ne fonctionne que via le réseau local.

Comment puis-je faire fonctionner mon SSH lorsque je suis hors de la maison? (Fonctionne de préférence avec l'application.)

xxmbabanexx
la source
pouvez-vous transférer un port depuis votre routeur?
SteveIrwin
1
@SteveIrwin Je le peux très probablement, mais comme je ne suis pas un spécialiste des réseaux, je préférerais une solution simple comme Port Map . En fait ... si je partage l'internet de mon Mac avec mon Pi, serais-je capable de partager des ports redirigés?
xxmbabanexx
1
configurer un port forward est probablement au moins aussi simple que d'utiliser Port Map. Vous devez nous en dire plus sur la configuration de votre LAN
John La Rooy
Le mieux est d'installer le service Weaved (www.weaved.com) et d'en finir avec. Tous les autres tutoriels que vous trouverez sur Internet vous mèneront sur une route frustrante.
IgorGanapolsky
pour l'article qui suggère l'utilisation de socketxp, utilisez ce qui suit pour télécharger socketxp dans le RPI curl -O portal.socketxp.com/download/arm/socketxp && chmod + wx socketxp && sudo mv socketxp / usr / local / bin au lieu de linux fichier.
jeonghoon

Réponses:

20

Voici les étapes que j'ai utilisées (sur debian) qui pourraient vous être utiles.

1.Réglage de l'IP statique pour le Pi.

a. Ouvrez le fichier d'interface à l'aide de la commande

sudo nano /etc/network/interfaces

b.Changez le fichier d'interfaces comme suit (cela fonctionne pour moi, je ne sais pas si quelques lignes peuvent être exclues).

auto lo
iface lo inet loopback
iface eth0 inet static
address 192.168.1.2  #static ip you want for the pi
netmask 255.255.255.0
gateway 192.168.1.1    # the ip address of the router

c.Vérifiez si l'Ip est modifié à l'aide de la commande ifconfig

2. Configuration d'un DNS dynamique

Très probablement, l'adresse IP attribuée par votre FAI est dynamique et nous avons donc besoin d'un moyen de résoudre les changements d'adresse IP. J'utilise les logiciels dnsdynamic et ddclient pour y parvenir.

Créer un compte avec dnsdynamic

b.Ajoutez un nouveau domaine et sélectionnez un nom et le domaine dans la liste.Vous pouvez choisir l'un des domaines disponibles avec votre choix de sous-domaine.Cliquez sur vérifier la disponibilité , puis ajoutez

capture d'écran dnsdynamic

3.Définir ddclient sur Pi

a.Installez ddclient à l'aide de la commande

sudo apt-get install ddclient

b.Ouvrez le fichier de configuration de ddclient à l'aide de la commande suivante et ajoutez les lignes suivantes.

sudo nano /etc/ddclient.conf

et modifiez le fichier comme suit.

# /etc/ddclient.conf
daemon=600
timeout=10
ssl=yes
protocol=dyndns2
use=web, web=myip.dnsdynamic.com
server=www.dnsdynamic.org
[email protected]  #userid for dnsdynamic.com
password='xxxx'      #password for the same put inside quotes
x.dnsdynamic.com  #the domain name you created

et enregistrez le fichier.

d. Nous souhaitons que le service ddclient démarre automatiquement au redémarrage. Procédez comme suit.

sudo nano /etc/rc.local

Ajoutez la commande suivante avant de quitter 0 (qui est la dernière ligne)

sudo /usr/sbin/ddclient -daemon 600 -syslog

Enregistrez le fichier.Pour démarrer ddclient, redémarrez votre pi ou exécutez la commande ci-dessus à l'invite.Il gardera votre nom de domaine mis à jour avec l'adresse IP actuelle changeant si nécessaire.

4. Transfert de port

a. Trouvez le modèle de votre routeur.

b.Allez sur portforward.com

c.Entrez la marque et le modèle de votre routeur pour trouver le guide détaillé sur le port de transfert.

d.Après avoir sélectionné la marque et le modèle du routeur, cliquez sur le guide par défaut dans la page redirigée.

e.Dans la zone de texte IP statique, entrez l'IP statique du Pi que vous avez donné à l'étape 1.

f. Suivez les étapes et le port de transfert 22. Le port source doit être 22 et le port de destination peut être n'importe quoi. N'oubliez pas d'utiliser le port de destination lors de la saisie dans pi. Port.

Si vous suiviez le didacticiel, connectez-vous à votre pi de n'importe où en utilisant le remplacement de l'adresse IP par le nom de domaine. par exemple, j'utilise [email protected]: 22 pour ssh dans mon pi.

SteveIrwin
la source
Merci beaucoup! Quand je reviens de visiter Exeter, je vais essayer ça!
xxmbabanexx
+1 Excellente réponse, cependant, avez-vous vraiment besoin d'utiliser sudodans /etc/rc.local, n'est-ce pas déjà en cours d'exécution en tant que root?
HeatfanJohn
Ainsi totalement foutu mes configurations Ngrok et Weaved. Maintenant, je ne peux plus me connecter!
IgorGanapolsky
2

Vous devez d'abord configurer la redirection de port. Chaque routeur est légèrement différent, vous devrez donc rechercher les spécificités de votre routeur.
Il existe des guides pratiques de redirection de port générique qui peuvent fonctionner pour la plupart des routeurs, mais je vous suggère de trouver un guide pour votre modèle de routeur actuel.

Définissez un port mémorable à lier à votre Raspberry Pi, tel que 23456 ou quelque chose. Veillez à ne pas écraser les numéros de port courants .

Enfin, en utilisant ssh, procédez comme suit:

$ ssh -p 23456 user@IP

Où:

phalt
la source
Pourquoi ne puis-je pas utiliser le port 22 au lieu du 23456 personnalisé?
IgorGanapolsky
1
@IgorGanapolsky vous pouvez le faire, mais 1) si vous avez un autre ordinateur auquel vous souhaitez vous connecter via SSH en dehors de votre domicile, il y aura un conflit et 2) plus risqué car de nombreux "pirates" essaient de se connecter via le port 22 , il est donc souvent recommandé de le
fermer
2

Accéder à votre RaspberryPi (ou même à des ordinateurs portables / serveurs) depuis l'extérieur de votre réseau domestique (c'est-à-dire depuis Internet) n'est pas une tâche facile, car votre ordinateur portable domestique ou RaspberryPi n'a qu'une adresse IP locale (dans la plage 10.xxx ou 192.168.xx intervalle). Il n'a pas d'adresse IP publique visible sur Internet.

La réponse simple à votre question est d'utiliser des services en ligne gratuits comme SocketXP qui fournit un point de terminaison de tunnel public sécurisé à SSH dans votre RaspberryPi depuis l'extérieur du réseau domestique.

SocketXP fournit un moyen simple, sécurisé et facile d'accéder à votre RaspberryPi domestique depuis le réseau extérieur. SocketXP ne vous oblige pas à pirater les paramètres de votre routeur WiFi. Cela fonctionne hors de la boîte. Pour savoir comment configurer votre RaspberryPi en SSH de l'extérieur, lisez ce blog sur la façon de connecter SSH à distance à votre RaspberryPi à l'aide de SocketXP.

Comment configurer SocketXP:

Étape 1 : installez le client SocketXP sur votre RaspberryPi à l'aide de la commande suivante.

$ curl -O https://portal.socketxp.com/download/linux/socketxp && chmod +wx socketxp && sudo mv socketxp /usr/local/bin

Étape 2: connectez le client SocketXP au service cloud SocketXP à l'aide de la commande suivante. Vous devez vous inscrire sur https://portal.socketxp.com pour obtenir votre jeton d'authentification unique.

$ socketxp -register "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NDk1MTg0MDAsImlkIjoiZ2FuZXNodmVscmFqYW5AZ21ha6K208n0.cB2uYevpH4lWIQGQUJdQ0eiEDqS8OiP_YOiqernnui3rjjadfadsfsfas34"

Étape 3 : Obtenez un point de terminaison de tunnel public pour accéder à votre RaspberryPi depuis Internet.

$ socketxp -connect tcp://localhost:22

Tunnel Access -> tunnel.socketxp.com:35277

Étape 4 : SSH dans votre RaspberryPi depuis Internet en utilisant la commande suivante.

$ ssh [email protected] -p 35277

où "raspberry-username" est le nom d'utilisateur / mot de passe que vous utilisez pour vous connecter SSH à votre RaspberryPi.

Ganesh Velrajan
la source
1

Cette question est ancienne, car avec le temps, il y a moins de chances que vous obteniez une adresse IPv4 accessible au public. Vous êtes probablement derrière un CGNAT, ce qui signifie que vous partagez un IPv4 public unique avec d'autres clients du FAI. Il n'est donc pas possible de faire un transfert de port vers votre PI ou autre chose.

Si vous avez IPv6, vous pouvez donner à votre PI une adresse statique et autoriser l'accès à celle-ci sur votre routeur. De nombreux fournisseurs de téléphonie mobile donnent désormais IPv6 aux téléphones. Les anciens FAI «terrestres» (fibre, DSL, coaxial, etc.) traînent souvent les pieds.

Vous pouvez également obtenir un VPS (serveur privé virtuel) bon marché avec un IPv4 public quelque part dans le cloud et créer un tunnel SSH du PI au VPS.

Lenne
la source
0

En plus de la réponse de phalt, vous devriez vérifier l'un des services DNS dynamiques, tels que No IP . Ils vous permettent d'accéder à votre réseau domestique sous un nom d'hôte statique, bien que votre adresse IP puisse changer quotidiennement, en raison de la déconnexion de votre fournisseur de câble ou DSL. Ils ont également une belle page de démarrage , qui vous présente également la configuration de votre routeur en conséquence.

Vous souhaiterez peut-être installer le inadynpackage sur votre Raspberry Pi pour mettre à jour vos entrées DNS sans IP lorsque l'IP change. Vous pouvez le faire en exécutant:

sudo apt-get install inadyn

Du README inadyn j'ai pris cet exemple d'appel:

inadyn --dyndns_system [email protected] -u USER-p PASS -a HOST

J'espère que cela t'aides.

Arne
la source
No-Ip a un DUC (client de mise à jour dynamique), qui garantira que votre adresse IP ne change pas.
IgorGanapolsky
0

Supplémentaire à la réponse de Steve Irwin:

Étape 1:

si vous vous connectez via wlan, utilisez:

iface wlan0 inet static
wpa-ssid "xxx" #<=your ssid
wpa-psk "yyy"  #<=your pw
address 192.168.1.xxx #<=preferred static ip (xxx<255)
netmask 255.255.255.0
gateway 192.168.1.1 #<=router's ip

Étape 2:

après avoir modifié ce qui précède, vous devez redémarrer networking:

sudo /etc/init.d/networking restart
David Bielen
la source
J'ai également ajouté 2 lignes devant le bloc statique, auto wlan0 allow-hotplug wlan0 Je l'ai trouvé dans ce post raspberrypi.stackexchange.com/a/10320/10148 J'ai également essayé de le faire sans eux mais quelque chose n'a pas fonctionné.
XandruCea
Cette réponse doit être considérée comme obsolète en raison de changements dans la configuration réseau et le système d'initialisation de Raspbian.
goldilocks
0

De plus, certains routeurs ont une prise en charge intégrée pour certains services DNS dynamiques, vous pouvez activer cette option (si elle existe) dans votre routeur pour éviter d'installer le client sur votre PI (et économiser un peu de temps pendant que vous y êtes).

user17925
la source
0

Donc, vous avez un serveur ssh (votre Raspberry PI) derrière un pare-feu (votre routeur) et vous voulez le connecter de n'importe où. Supposons que votre serveur ssh soit correctement configuré, c'est-à-dire que l'exécution de 'ssh username @ localhost date' sur votre Raspberry affiche la date / heure actuelle.

Vous devez résoudre deux problèmes:

  • Votre routeur doit transmettre un port fixe à votre port ssh de framboise (généralement 22).
  • Vous devez connaître l'adresse IP publique de votre routeur (qui change généralement lors de la reconnexion du routeur et autant qu'une fois en 24h).

Transfert de port et DynDNS

Des solutions existent (comme cela a été souligné par d'autres):

  • L'ouverture d'une redirection de port sur votre routeur est spécifique à chaque routeur et se fait généralement sur le site Web des paramètres des routeurs.
  • La détermination de l'IP actuelle est plus facile à faire par un site Web externe ( https://www.google.com/search?q=whats+my+ip ). Si votre IP change régulièrement, vous pouvez obtenir une entrée DNS dynamique ( https://www.noip.com/ , https://dyn.com/dns/ , etc.).

S'il est correctement configuré, la connexion de votre rasbperry pi peut être possible avec:

ssh username@[yourIP] -p [port] 
# or using dyndns 
ssh [email protected] -p [port]

Utilisation de sshhub.de

Une autre solution très pratique, non mentionnée jusqu'à présent, est SSHHub (divulgateur, je suis l'auteur). Il utilise le transfert de ssh pour accéder à votre Rasperry PI de n'importe où. C'est fiable, gratuit et assez simple à installer . Inscrivez-vous une fois:

ssh [email protected] register

exécuter sur votre Raspberry PI:

while true; do ssh [username]@sshhub.de -R 22:localhost:22 -N -o ServerAliveInterval=10; sleep 10; done

...et c'est tout! Vous pouvez connecter votre Raspberry Pi de n'importe où:

ssh -J [username]@sshhub.de localhost
Oliver
la source
Bonjour et bienvenue sur Raspberry Pi! Veuillez faire le tour et visiter le centre d' aide pour voir comment les choses fonctionnent ici. Merci pour votre contribution mais veuillez noter que nous vous prions de bien vouloir divulguer votre affiliation dans vos réponses . (Je suppose que vous êtes l'auteur du logiciel recommandé.)
Ghanima
Merci de m'avoir indiqué dans la bonne direction. Je suis l'auteur. Je veux certainement apporter de la valeur à ma réponse pour les personnes à la recherche d'une solution. Et j'espère que mon fait aussi bien que sshhub lui-même.
Oliver
0

Vous pouvez utiliser un VPN pour activer l'accès entrant à votre pi. OpenVPN est une solution, qui nécessiterait que vous ayez un ordinateur accessible depuis Internet (un port entrant). Cependant, tant qu'un ordinateur est accessible, les autres ordinateurs ne doivent pas nécessairement l'être car ils peuvent être des clients du serveur OpenVPN.

Une autre option serait d'utiliser un service tel que ZeroTier, qui fournit des serveurs centralisés pour créer un VPN, de sorte que vous n'auriez pas besoin d'exécuter votre propre serveur. C'est également gratuit.

Rebroad
la source
Une autre très bonne option consiste à utiliser un protège-fil .
Ingo