web-dev-qa-db-fra.com

SSH aux ordinateurs à la maison

J'ai plusieurs machines à la maison auxquelles j'aimerais accéder depuis l'école en utilisant SSH et VNC. Pour ce faire, je leur ai donné des adresses IP statiques:

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

Je sais que SSH utilise le port 22, je peux donc transférer ce port sur 192.168.1.51:22 sur mon routeur, mais de cette manière, je ne pourrai pas utiliser SSH sur mon Raspberry Pi. Existe-t-il un moyen de configurer cela pour pouvoir accéder aux deux machines?

21
acourchesne

Si vous avez IPv6, vous n'avez même pas besoin de redirection de port! Obtenez simplement votre adresse IPv6 permanente (en fonction de votre adresse MAC, de sorte qu'il est garanti de rester identique à moins que votre FAI ne sache pas comment fonctionne IPv6) et utilisez-la pour le tunnel. Votre adresse IPv6 est publique et permet au monde de vous pour vous accéder sans passer par votre NAT local, vous n'avez pas besoin de vous permettre d'activer le transfert de port, où que vous soyez. Cela fonctionnera "juste."

Notez cependant qu'IPv6 n'est toujours pas vraiment pris en charge au niveau mondial et que votre connexion Internet domestique et votre connexion Internet distante doivent disposer d'un IPv6 entièrement opérationnel pour pouvoir le faire.

Cependant, si vous êtes comme la plupart des gens et n’avez que l’IPv4, il ya encore du chemin! Certains routeurs vous permettent de transférer des ports source spécifiques vers des ports de destination spécifiques, comme suit:

enter image description here

Dans cet exemple, le port 22 est transmis directement à ma machine sheepdogname__, tandis que le port 292 est en cours de transfert au port 22 sur coyotename__.

Enfin, si votre routeur ne dispose pas de cette fonctionnalité, vous pouvez simplement changer de port, car SSH n’est pas limité à une exécution sur le port 22. Vous pouvez définir ce que vous voulez (ce qui n'est pas utilisé).

Dans /etc/ssh/sshd_config (vous avez besoin de root pour éditer, donc Sudo nano /etc/ssh/sshd_config), il y a une ligne en haut du fichier:

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

Changez ceci en ce que vous voulez:

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

Redémarrez le serveur SSH avec Sudo service ssh restart et transférez le port sur le routeur.


Cependant, dans ce cas d'utilisation, je considérerais si les tunnels SSH sont la bonne chose à faire. Peut-être devriez-vous configurer un serveur VPN dédié sur votre réseau domestique? Cela vous permettra d'accéder à votre réseau complet depuis n'importe où, à condition que vous disposiez des informations d'identification de sécurité requises par le VPN. De plus, un VPN génère un peu moins de temps système; En règle générale, vous ne devez transférer qu'un seul port pour une seule machine.

32
Kaz Wolfe

Un moyen simple de résoudre ce problème consiste à mapper différents ports de votre routeur sur le port 22 de vos machines. Par exemple, vous pouvez avoir les paramètres suivants dans votre routeur (en supposant que votre routeur ait IP 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)

Ensuite, lorsque vous utilisez ssh, spécifiez le port que vous souhaitez utiliser en tapant

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

Vous devriez maintenant pouvoir vous connecter à toutes vos machines.

19
Liu Siyuan

Si vous savez qu'un de vos ordinateurs est toujours en marche, vous avez également la possibilité de l'utiliser comme proxy ssh.

supposons que vous avez configuré un nom de domaine pour votre adresse IP externe (par exemple, myhome.dyndns.com ou autre), vous allez vous connecter sur un ordinateur (disons que framboise est toujours active et que vous transférez le port de votre routeur à les connexions ssh seront:

école -> (routeur, transparent ici) -> framboise -> ubuntu ou windows

maintenant, dans votre ~/.ssh/config à l’école, ajoutez les lignes:

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]

Pour vous connecter alors:

ssh-add ~/.ssh/id_rsa # to do only once per session
ssh myuser@ubuntu (login without password)

À partir de maintenant, si vous tapez ssh ubuntu, l'ordinateur se connecte d'abord à framboise, puis démarre une session ssh sur l'ordinateur ubuntu.

Je vous recommande, quel que soit le port que vous choisissez de transférer, de désactiver le mot de passe dans /etc/sshd.conf pour autoriser uniquement la connexion via la clé ssh. Ainsi, si vous configurez la clé sur framboise et sur ubuntu, avec le paramètre 'ForwardAgent', vous devrez uniquement la déverrouiller. Aucun mot de passe n'est nécessaire pour vous connecter. De cette façon, même si les robots tentent de se connecter sur votre ssh, ils ne pourront jamais se connecter car vous interdisez la connexion par mot de passe.

En prime, cela fonctionne aussi avec scp, scp foo ubuntu:/tmp/foo utilisera la même configuration sans autres paramètres. Bonus 2, cette configuration ne nécessite aucune modification à la maison, si demain, vous et un autre ordinateur, copiez/collez simplement le code dans votre configuration ssh, modifiez l'hôte et l'adresse IP, c'est tout, pas besoin d'ouvrir un nouveau port sur le routeur.

11
potens

Je fais ceci - je laisse le rpi haut et branché directement dans le routeur tout le temps (puisqu'il est le moins coûteux à exécuter) et ssh dedans, puis je le retourne aux autres - il n'a jamais besoin de beaucoup d'attention.

Il est également possible de créer une interface graphique VNC/RDP sur un canal ssh, ce qui est amusant ou de transférer un port qui vous permet de naviguer vers un serveur de votre ordinateur de bureau tout en le gardant privé.

La raison pour laquelle j'ai ajouté cette réponse est d'aller vous donner quelques suggestions.

1) Utilisez un autre port que 22. Vous pouvez le laisser 22 sur le PI, mais changez le port entrant de votre routeur à plus de 10 000 ... Sinon, vous subirez des dizaines à des centaines d'attaques par jour - et une fois êtes connu pour utiliser un hôte SSH dès qu'un exploit est découvert: vous en êtes le propriétaire.

2) Utilisez des certificats au lieu de nom d'utilisateur/mot de passe - désactivez complètement la connexion nom d'utilisateur/mot de passe.

3) Si votre adresse IP peut changer, utilisez un service de type dyndns pour obtenir un hosthame DNS (j’utilise noip, c’est gratuit et ils supportent un client Linux pour mettre à jour votre adresse ip - je pense que vous pouvez simplement le faire avec apt-get le pi maintenant). Il y a encore quelques autres entreprises qui offrent cela gratuitement.

4) Gardez votre pi (ou ce que vous utilisez) à jour (Sudo apt-get update). Je pense que ssh est assez bien contrôlé à ce jour, mais je croyais aussi que https ...

4
Bill K

Doutais-je que cela conviendrait mieux comme commentaire que comme réponse, mais je le posterai ici quand même.

Quelques points auxquels vous devriez penser avant de faire ceci:

  1. Vous allez ouvrir vos systèmes à Internet. Vous devez donc vous assurer qu'ils sont bien corrigés et que votre configuration de sécurité est renforcée (par exemple, n'autorisez pas la connexion à la racine et utilisez des clés pub au lieu de mots de passe).
  2. Votre IP publique (voir whatismyip.com) peut changer. Selon votre fournisseur d'accès, elle peut changer tous les jours ou presque jamais. Cela signifie que vous devrez trouver un moyen de déterminer votre adresse IP publique. Vous pouvez visiter whatismyip.com depuis votre réseau domestique tous les jours, créer une application ou utiliser un DNS dynamique (DynDNS) pour mapper votre adresse IP publique en cours de modification sur un nom de domaine statique.
  3. Si vous souhaitez utiliser IPv6 pour contourner tous les tracas liés à IPv4 et au NAT, vous aurez également besoin de vos périphériques, routeur, fournisseur d'accès Internet, ... pour parler également d'IPv6. Certains services peuvent vous aider lorsque votre fournisseur de services Internet ne prend pas en charge IPv6, mais vos périphériques et votre routeur devront quand même en parler.
  4. Plus vous ouvrez de ports et de périphériques sur Internet, plus votre zone d'attaque s'agrandit. Je suggérerais d'utiliser une boîte de jonction dans votre réseau et d'autoriser uniquement l'accès SSH à cet appareil à partir d'Internet. Le jump-box est un système très dur que vous transférez via votre routeur à Internet. Une fois connecté à cette boîte, vous pourrez passer en SSH sur votre réseau interne. Le jump-box pourrait être fondamentalement un autre Raspberry Pi. Je suggérerais d'utiliser un périphérique dédié, afin de pouvoir le durcir autant que possible (entre autres en exécutant le moins de services possible).
  5. (4a) Au lieu d'avoir une boîte de jonction dans laquelle vous êtes SSH, vous pouvez également configurer un serveur VPN qui vous permet de parcourir votre réseau domestique à partir de votre appareil à l'école (si les connexions VPN sortantes sont autorisées).
3
BlueCacti