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:
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?
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:
Dans cet exemple, le port 22
est transmis directement à ma machine sheepdog
name__, tandis que le port 292
est en cours de transfert au port 22
sur coyote
name__.
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.
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.
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.
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 ...
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: