L'une des fonctionnalités les plus attrayantes de Linux est la capacité d'utiliser habilement un ordinateur avec rien d'autre que des commandes saisies au clavier - et mieux encore, de pouvoir le faire sur des ordinateurs partout dans le monde. Grâce à OpenSSH, les utilisateurs POSIX peuvent ouvrir un shell sécurisé sur n'importe quel ordinateur auquel ils sont autorisés à accéder et l'utiliser à distance. C'est une tâche quotidienne pour de nombreux utilisateurs de Linux, mais cela peut être déroutant pour quelqu'un qui ne l'a pas encore essayé. Cet article explique comment configurer deux ordinateurs pour les connexions Secure Shell (SSH) et comment se connecter en toute sécurité de l'un à l'autre sans mot de passe.
Terminologie
Lorsque vous discutez de plusieurs ordinateurs, il peut être déroutant de les distinguer les uns des autres. La communauté informatique a des termes bien établis pour aider à clarifier les descriptions du processus de mise en réseau des ordinateurs ensemble.
- Service : Un service est un logiciel qui s'exécute en arrière-plan afin qu'il puisse être utilisé par des ordinateurs autres que celui sur lequel il est installé. Par exemple, un serveur Web héberge un service de partage Web . Le terme implique (mais n'insiste pas) qu'il s'agit d'un logiciel sans interface graphique.
- Hôte : Un hôte est n'importe quel ordinateur. En informatique, les ordinateurs sont appelés hôte car techniquement, n'importe quel ordinateur peut héberger une application utile à un autre ordinateur. Vous ne considérez peut-être pas votre ordinateur portable comme un "hôte", mais vous exécutez probablement un service qui est utile pour vous, votre mobile ou un autre ordinateur.
- Local : L'ordinateur local est celui que vous ou un logiciel utilisez. Chaque ordinateur se réfère à lui-même en tant que
localhost
, par exemple. - À distance : Un ordinateur distant est un ordinateur devant lequel vous n'êtes pas physiquement présent et que vous n'utilisez pas physiquement. C'est un ordinateur dans une télécommande emplacement.
Maintenant que la terminologie est réglée, vous pouvez commencer.
Activer SSH sur chaque hôte
Pour que deux ordinateurs soient connectés via SSH, chaque hôte doit avoir SSH installé. SSH a deux composants :la commande que vous utilisez sur votre machine locale pour démarrer une connexion et un serveur pour accepter les demandes de connexion entrantes. Certains ordinateurs sont livrés avec une ou les deux parties de SSH déjà installées. Les commandes varient en fonction de votre système pour vérifier si vous avez installé à la fois la commande et le serveur. La méthode la plus simple consiste donc à rechercher les fichiers de configuration pertinents :
$ file /etc/ssh/ssh_config
/etc/ssh/ssh_config: ASCII text
Cela devrait-il renvoyer un No such file or directory
erreur, la commande SSH n'est pas installée.
Effectuez une vérification similaire pour le service SSH (notez le d
dans le nom du fichier):
$ file /etc/ssh/sshd_config
/etc/ssh/sshd_config: ASCII text
Installez l'un ou l'autre, selon vos besoins :
$ sudo dnf install openssh-clients openssh-server
Sur l'ordinateur distant, activez le service SSH avec systemd :
$ sudo systemctl enable --now sshd
Vous pouvez également activer le service SSH à partir des Paramètres système sur GNOME ou Préférences système sur macOS. Sur le bureau GNOME, il se trouve dans le dossier Partage panneau :
Démarrer un shell sécurisé
Plus de ressources Linux
- Aide-mémoire des commandes Linux
- Aide-mémoire des commandes Linux avancées
- Cours en ligne gratuit :Présentation technique de RHEL
- Aide-mémoire sur le réseau Linux
- Aide-mémoire SELinux
- Aide-mémoire sur les commandes courantes de Linux
- Que sont les conteneurs Linux ?
- Nos derniers articles Linux
Maintenant que vous avez installé et activé SSH sur l'ordinateur distant, vous pouvez essayer de vous connecter avec un mot de passe à titre de test. Pour accéder à l'ordinateur distant, vous devez disposer d'un compte utilisateur et d'un mot de passe.
Votre utilisateur distant ne doit pas nécessairement être le même que votre utilisateur local. Vous pouvez vous connecter en tant que n'importe quel utilisateur sur la machine distante tant que vous disposez du mot de passe de cet utilisateur. Par exemple, je suis sethkenlon
sur mon ordinateur de travail, mais je suis seth
sur mon ordinateur personnel. Si je suis sur mon ordinateur personnel (ce qui en fait ma machine locale actuelle) et que je veux me connecter en SSH à mon ordinateur de travail, je peux le faire en m'identifiant en tant que sethkenlon
et en utilisant mon mot de passe professionnel.
Pour vous connecter en SSH à l'ordinateur distant, vous devez connaître son adresse IP (Internet Protocol) ou son nom d'hôte résoluble. Pour trouver l'adresse IP de la machine distante, utilisez le ip
commande (sur l'ordinateur distant) :
$ ip addr show | grep "inet "
inet 127.0.0.1/8 scope host lo
inet 10.1.1.5/27 brd 10.1.1.31 [...]
Si l'ordinateur distant n'a pas le ip
commande, essayez ifconfig
à la place (ou même ipconfig
sous Windows).
L'adresse 127.0.0.1 est spéciale et est, en fait, l'adresse de localhost
. C'est une adresse de "bouclage", que votre système utilise pour se joindre. Ce n'est pas utile lors de la connexion à une machine distante, donc dans cet exemple, l'adresse IP correcte de l'ordinateur distant est 10.1.1.5. Dans la vraie vie, je le saurais parce que mon réseau local utilise le sous-réseau 10.1.1.0. Si l'ordinateur distant se trouve sur un réseau différent, l'adresse IP peut être presque n'importe quoi (jamais 127.0.0.1, cependant), et un routage spécial est probablement nécessaire pour l'atteindre via divers pare-feu. Supposons que votre ordinateur distant se trouve sur le même réseau, mais si vous souhaitez atteindre des ordinateurs plus distants que votre propre réseau, lisez mon article sur l'ouverture de ports dans votre pare-feu.
Si vous pouvez envoyer un ping à la machine distante par son adresse IP ou son nom d'hôte et que vous y ayez un compte de connexion, vous pouvez vous y connecter en SSH :
$ ping -c1 10.1.1.5
PING 10.1.1.5 (10.1.1.5) 56(84) bytes of data.
64 bytes from 10.1.1.5: icmp_seq=1 ttl=64 time=4.66 ms
$ ping -c1 akiton.local
PING 10.1.1.5 (10.1.1.5) 56(84) bytes of data.
C'est un succès. Utilisez maintenant SSH pour vous connecter :
$ whoami
seth
$ ssh [email protected]
bash$ whoami
sethkenlon
La connexion de test fonctionne, vous êtes maintenant prêt à activer la connexion sans mot de passe.
Créer une clé SSH
Pour vous connecter en toute sécurité à un autre ordinateur sans mot de passe, vous devez disposer d'une clé SSH. Vous avez peut-être déjà une clé SSH, mais cela ne fait pas de mal d'en créer une nouvelle. Une clé SSH commence sa vie sur votre machine locale. Il se compose de deux composants :une clé privée, que vous ne partagez jamais avec personne ou quoi que ce soit, et une clé publique, que vous copiez sur n'importe quelle machine distante à laquelle vous souhaitez avoir un accès sans mot de passe.
Certaines personnes créent une clé SSH et l'utilisent pour tout, des connexions à distance à l'authentification GitLab. Cependant, j'utilise différentes clés pour différents groupes de tâches. Par exemple, j'utilise une clé à la maison pour m'authentifier auprès des machines locales, une clé différente pour m'authentifier auprès des serveurs Web que je maintiens, une clé distincte pour les hôtes Git, une autre pour les référentiels Git que j'héberge, etc. Dans cet exemple, je vais créer une clé unique à utiliser sur les ordinateurs de mon réseau local.
Pour créer une nouvelle clé SSH, utilisez le ssh-keygen
commande :
$ ssh-keygen -t ed25519 -f ~/.ssh/lan
Le -t
option signifie type et garantit que le cryptage utilisé pour la clé est supérieur à la valeur par défaut. Le -f
option signifie fichier et définit le nom et l'emplacement du fichier de la clé. Vous serez invité à créer un mot de passe pour votre clé SSH. Vous devez créer un mot de passe pour la clé. Cela signifie que vous devrez entrer un mot de passe lors de l'utilisation de la clé, mais ce mot de passe reste local et n'est pas transmis sur le réseau. Après avoir exécuté cette commande, il vous reste une clé privée SSH appelée lan
et une clé publique SSH appelée lan.pub
.
Pour obtenir la clé publique sur votre machine distante, utilisez le ssh-copy-id
. Pour que cela fonctionne, vous devez vérifier que vous disposez d'un accès SSH à la machine distante. Si vous ne pouvez pas vous connecter à l'hôte distant avec un mot de passe, vous ne pouvez pas non plus configurer une connexion sans mot de passe :
$ ssh-copy-id -i ~/.ssh/lan.pub [email protected]
Au cours de ce processus, vous serez invité à entrer votre mot de passe de connexion sur l'hôte distant.
En cas de succès, essayez de vous reconnecter, mais cette fois en utilisant le -i
option pour pointer la commande SSH vers la clé appropriée (lan
, dans cet exemple) :
$ ssh -i ~/.ssh/lan [email protected]
bash$ whoami
sethkenlon
Répétez ce processus pour tous les ordinateurs de votre réseau et vous pourrez parcourir chaque hôte sans plus jamais penser aux mots de passe. En fait, une fois que vous avez configuré l'authentification sans mot de passe, vous pouvez modifier le /etc/ssh/sshd_config
fichier pour interdire l'authentification par mot de passe. Cela empêche quiconque d'utiliser SSH pour s'authentifier auprès d'un ordinateur à moins qu'il ne dispose de votre clé privée. Pour ce faire, ouvrez /etc/ssh/sshd_config
dans un éditeur de texte avec sudo
autorisations et recherchez la chaîne PasswordAuthentication
. Remplacez la ligne par défaut par ceci :
PasswordAuthentication no
Enregistrez-le et redémarrez le serveur SSH (ou redémarrez simplement) :
$ sudo systemctl restart sshd && echo "OK"
OK
$
Utiliser SSH tous les jours
OpenSSH change votre vision de l'informatique. Vous n'êtes plus limité à l'ordinateur devant vous. Avec SSH, vous avez accès à n'importe quel ordinateur de votre maison, ou aux serveurs sur lesquels vous avez des comptes, et même aux appareils mobiles et Internet des objets. Débloquer la puissance de SSH débloque également la puissance du terminal Linux. Si vous n'utilisez pas SSH tous les jours, commencez maintenant. Installez-vous confortablement, récupérez des clés, vivez en toute sécurité et élargissez votre monde.