SSH vers les ordinateurs personnels

21

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, donc je peux transférer ce port vers 192.168.1.51:22 sur mon routeur, mais de cette façon, je ne pourrai pas SSH vers mon Raspberry Pi. Existe-t-il un moyen de configurer cela pour pouvoir accéder aux deux machines?

acourchesne
la source
10
Vous pouvez utiliser différents ports ssh. Je ne sais pas à quel point c'est difficile sur Windows, mais sur Linux, il est vraiment facile de le changer en un port non standard . De cette façon, vous pouvez transférer le port 22 pour gagner la machine (aucun changement là-bas), et l'autre port (non standard) vers le RaspberryPi.
bistoco
2
@Melebius, c'est vieux mais toujours une bonne lecture, la partie clé pour moi est "L'argument de base que j'ai essayé de faire: ne faites pas la sécurité à travers l'obscurité.", Il s'agit d'un besoin et de le résoudre facilement . Cela dit, il n'a peut-être pas à changer les ports ubuntu ou pi, il suffit de transmettre différents ports de routeur à chaque port de 22 machines.
bistoco
1
@bistoco D'accord. Cependant, le PO est sur le point d'exposer l'accès SSH au monde extérieur et la sécurité doit toujours être considérée dans un tel cas. La définition de différents ports sur les ordinateurs ne résout pas le problème de l'OP car il doit activer différents ports (= redirection de port) sur son routeur.
Melebius
6
@Melebius Off topic, mais je n'utilise jamais 22, juste parce que les robots automatisés ne frapperont pas mon serveur 24/7. Cela n'empêchera pas un véritable attaquant (ou un script bien écrit), mais cela réduira le nombre de mes entrées de journal.
Kaz Wolfe
4
Vous pouvez simplement vous connecter à l'un d'eux (celui qui est accessible au public), puis vous connecter à partir de celui-ci en utilisant l'adresse locale aux autres.
tkausl

Réponses:

32

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, il est donc garanti de rester la même à moins que votre FAI ne sache pas comment fonctionne IPv6) et utilisez-la pour créer un tunnel. Comme votre adresse IPv6 est publique et permet au monde pour vous accéder sans avoir à passer par votre NAT local, vous n'avez pas à vous soucier d'activer la redirection de port n'importe où. Cela "fonctionnera tout simplement".

Notez, cependant, que IPv6 n'est toujours pas vraiment pris en charge à l'échelle mondiale, et que votre connexion Internet à domicile et votre connexion Internet à distance doivent avoir IPv6 pleinement opérationnel pour ce faire.

Cependant, si vous êtes comme la plupart des gens et que vous n'avez que IPv4, il y a encore un moyen! Certains routeurs vous permettent de transférer des ports source spécifiques vers des ports de destination spécifiques, comme ceci:

entrez la description de l'image ici

Dans cet exemple, le port 22est transmis directement à ma machine sheepdog, tandis que le port 292est transmis au port 22activé coyote.

Enfin, si votre routeur ne dispose pas de cette fonctionnalité, vous pouvez simplement changer le port, car SSH ne se limite pas à simplement s'exécuter sur le port 22. Vous pouvez le définir comme vous le souhaitez (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 cela en ce que vous voulez:

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

Redémarrez le serveur SSH avec sudo service ssh restartet transférez le port sur le routeur.


Cependant, pour ce cas d'utilisation, je considérerais si les tunnels SSH sont la bonne chose à faire. Vous devriez peut-être configurer un serveur VPN dédié sur votre réseau domestique? Cela vous permettra d'accéder à l' ensemble de votre réseau domestique à partir de n'importe où, à condition que vous disposiez des informations de sécurité appropriées nécessaires au VPN. De plus, les frais généraux sont légèrement inférieurs avec un VPN; vous n'avez généralement besoin de transférer qu'un seul port pour une seule machine.

Kaz Wolfe
la source
2
Vous pouvez utiliser un courtier de tunnel IPv6 pour obtenir des adresses IPv6 si votre FAI ne prend pas en charge IPv6.
André Borie
1
Par "cette fonctionnalité", vous voulez dire rediriger un port vers un autre port?
Liu Siyuan
@LiuSiyuan Yep. Je sais que c'est étrange, mais j'ai vu des routeurs qui ne peuvent pas le gérer. Mon ancien routeur fourni par le FAI ne pouvait même pas essayer.
Kaz Wolfe
Je n'ai pas tout à fait compris cette partie IPv6. Devons-nous supposer que tous les FAI fournissant des adresses IPv6 vous en donnent une (cohérente) différente pour chaque appareil sur le réseau?
jjmontes
1
@jjmontes Si votre FAI est compétent, vous obtiendrez un full / 64 (ou peut-être moins, mais toujours assez pour en attribuer un à chaque machine)
Kaz Wolfe
19

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

Liu Siyuan
la source
11

Si vous savez que l'un de vos ordinateurs est toujours opérationnel, vous avez également la possibilité de l'utiliser comme proxy ssh.

disons que vous avez un nom de domaine configuré pour votre adresse IP externe (c.-à-d. myhome.dyndns.com ou autre), ce que vous allez faire est de vous connecter sur un ordinateur (disons que la framboise est toujours active et que vous transférez le port de votre routeur vers it), vos 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 se connecter ensuite:

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 connectera d'abord à la framboise, puis démarrera 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. De cette façon, si vous configurez la clé sur la framboise et sur ubuntu, avec le paramètre 'ForwardAgent', vous n'aurez qu'à déverrouiller la clé et aucun mot de passe n'est requis pour se connecter. De cette façon, même si les bots essaient de se connecter sur votre ssh, ils ne pourront jamais se connecter puisque vous interdisez la connexion par mot de passe.

Bonus, 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 aucun changement à la maison, si demain vous et un autre ordinateur, copiez / collez simplement le code dans votre configuration ssh, changez l'hôte et l'ip, c'est tout, pas besoin d'ouvrir un nouveau port sur le routeur

potens
la source
Y a-t-il un inconvénient à utiliser une machine comme intermédiaire pour SSH? Supposons que j'utilise mon Raspberry Pi pour me connecter à d'autres ordinateurs du réseau, ses performances affecteront-elles la tâche?
acourchesne
1
Oui, la framboise pourrait limiter le débit car elle doit servir de serveur et de client. Si vous êtes suffisamment confiant, vous pouvez obtenir le même résultat avec les tunnels ssh. De cette façon, la framboise agit uniquement comme un serveur mais votre ordinateur scolaire doit faire deux clients.
potens
4

Je le fais - je laisse le rpi en place et je le branche directement sur le routeur tout le temps (car c'est le moins cher à exécuter) et je le ssh simplement, puis je rebondis dessus vers les autres - il n'a jamais besoin de beaucoup d'attention.

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

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

1) Utilisez un port différent de 22. Vous pouvez le laisser 22 sur le PI, mais changez le port entrant sur votre routeur en quelque chose de plus de 10 000 ... Sinon, vous obtiendrez des dizaines à des centaines d'attaques par jour - et une fois que vous êtes connu pour exécuter un hôte SSH la seconde où un exploit est trouvé, vous en êtes le propriétaire.

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

3) Si votre adresse IP peut changer, utilisez un service de type dyndns pour vous procurer un hosthame DNS (j'utilise noip, c'est gratuit et ils prennent en charge un client Linux pour mettre à jour votre adresse ip - je pense que vous pouvez simplement en obtenir le pi maintenant). Il y a encore quelques autres sociétés qui offrent cela gratuitement.

4) Gardez votre pi (ou tout ce que vous utilisez) à jour (mise à jour sudo apt-get). Je crois que ssh est assez bien vérifié maintenant, mais je croyais aussi que de https ...

Bill K
la source
3

Je doutais que cela convienne mieux comme commentaire plutôt que comme réponse, mais je le posterai quand même ici.

Quelques choses auxquelles vous devez penser avant de faire ceci:

  1. Vous ouvrirez vos systèmes à Internet, vous devriez 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 root et n'utilisez pas de clés de pub au lieu de mots de passe).
  2. Votre adresse IP publique (voir whatismyip.com) peut changer, selon votre FAI, elle peut changer quotidiennement ou presque jamais. Cela signifie que vous devrez trouver un moyen de déterminer votre adresse IP publique. Vous pouvez visiter whatismyip.com à partir de votre réseau domestique quotidiennement, créer une application ou utiliser Dynamic DNS (DynDNS) pour mapper votre IP publique changeante à un nom de domaine statique.
  3. Si vous souhaitez utiliser IPv6 pour contourner tous les tracas liés à IPv4 et NATing, vous aurez également besoin de vos appareils, routeur, FAI, ... pour parler IPv6. Il existe certains services qui peuvent vous aider lorsque votre FAI ne prend pas en charge IPv6, mais vos appareils et votre routeur devront quand même en parler.
  4. Plus vous ouvrez de ports et d'appareils sur Internet, plus votre zone d'attaque s'agrandit. Je suggérerais d'utiliser une boîte de saut dans votre réseau et de n'autoriser l'accès SSH à cet appareil que depuis Internet. La boîte de saut serait essentiellement un système très durci que vous transférez sur votre routeur vers Internet. Une fois connecté à cette boîte, vous pourrez vous connecter à votre réseau interne via SSH. La boîte de saut pourrait être fondamentalement un autre Raspberry Pi. Je suggérerais d'utiliser un appareil dédié, pour pouvoir le durcir le plus possible (entre autres en exécutant le moins de services possible).
  5. (4a) Au lieu d'avoir une boîte de connexion dans laquelle vous vous connectez 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).
BlueCacti
la source