GNU/Linux >> Tutoriels Linux >  >> Linux

Un guide du débutant sur SSH pour la connexion à distance sous Linux

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.


Linux
  1. Un guide du terminal Linux pour les débutants

  2. Qu'est-ce que CentOS - Guide du débutant

  3. 5 meilleures applications de bureau à distance pour Linux

  4. Qu'est-ce que Linux ? Un guide pour les utilisateurs non techniques

  5. Guide du débutant pour l'installation de Pop!_OS Linux

Comment SSH dans un répertoire particulier sous Linux

Exécuter des commandes sur des systèmes Linux distants via SSH

Comment configurer l'authentification multifacteur pour SSH sous Linux

Guide de démarrage rapide d'Ansible pour les administrateurs système Linux

Comment effectuer une sauvegarde Linux à distance à l'aide de SSH

Guide de configuration du serveur SFTP sous Linux