SSH, pour se connecter en ligne de commande à un ordinateur distant

Logo de OpenSSH

Cet article est le premier d'une série de quatre :

  1. SSH, pour se connecter en ligne de commande à un ordinateur distant
  2. SSH, se connecter sans mot de passe à l'aide de la cryptographie
  3. Reverse SSH, pour se connecter à un ordinateur distant protégé par un pare-feu
  4. SSH, des tunnels pour tous les services

En administration système, il est très courant de devoir prendre le contrôle à distance d'un autre ordinateur — souvent, il s'agit d'un serveur. Pour cela, on utilise SSH qui permet de se connecter en ligne de commande de manière sécurisée. Un client SSH doit être installé sur la machine qui souhaite se connecter à l'ordinateur distant, sur lequel doit être installé un serveur SSH. Bien souvent, il n'est pas nécessaire d'installer de client SSH ; les distributions GNU/Linux les plus répandues en sont dotées par défaut.

OpenSSH est l'implémentation SSH la plus répandue. Cet article décrit l'installation de openssh-server sur une distribution Debian GNU/Linux, ainsi que quelques cas d'usages simples.

Logo de OpenSSH
Logo de OpenSSH

Informations techniques

Nom du programme : OpenSSH
Version utilisée : 7.4
Licence : BSD
Auteur : OpenBSD
Site web du projet : https://www.openbsd.org
Site web du programme : https://www.openssh.com

Distribution utilisée : Debian GNU/Linux 9.5 « Stretch »

SSH (article Wikipédia) : https://fr.wikipedia.org/wiki/Secure_Shell
OpenSSH (article Wikipédia) : https://fr.wikipedia.org/wiki/OpenSSH

Dans un premier temps, nous allons considérer que l'ordinateur client et l'ordinateur distant auquel on souhaite se connecter sont sur le même réseau local. L'ordinateur client depuis lequel on souhaite se connecter à distance se nomme CLIENT. USER_B est l'utilisateur standard de l'ordinateur auquel on souhaite se connecter à distance, nommé SERVEUR_B. Tous les ordinateurs utilisés sont propulsés par une distribution Debian GNU/Linux.

Connexion directe
Connexion directe

La première étape consiste à installer un serveur SSH sur l'ordinateur SERVEUR_B.

Installation du serveur OpenSSH sur SERVEUR_B

Se connecter en tant que super-utilisateur :

su -

Installer le serveur OpenSSH :

apt install openssh-server

Se déconnecter :

exit

Se connecter à SERVEUR_B depuis CLIENT

Depuis l'ordinateur client, on peut désormais se connecter au serveur :

ssh USER_B@IP_SERVEUR_B

IP_SERVEUR_B est ici le nom de domaine de l'ordinateur SERVEUR_B, ou bien son adresse IP locale. Après avoir tapé le mot de passe de l'utilisateur USER_B qui est demandé, on est bien connecté au serveur.

Se connecter à un serveur véritablement distant

Si le serveur est situé en dehors du réseau local, cela peut se compliquer. Si, par des règles de routage ou quelque autre raison, le serveur est directement accessible par un nom de domaine ou une adresse IP publique, la commande pour s'y connecter est identique.

Connexion via un pare-feu convenablement configuré
Connexion via un pare-feu convenablement configuré

Par défaut, le port de connexion SSH est le 22. Si, par des règles de routage ou un changement de configuration du serveur, le port de connexion s'avère différent, il faut l'indiquer dans la ligne de commande :

ssh -p PORT USER_B@IP_SERVEUR_B

PORT est le numéro du port à utiliser.

Sauter d'un serveur à l'autre

Il est parfois difficile de traverser certains pare-feux qui n'ont pas été configurés pour permettre l'accès à tous les serveurs souhaités. Il est néanmoins possible de se connecter de proche en proche. Imaginons que CLIENT souhaite se connecter à SERVEUR_B, mais que ce dernier ne lui est pas directement accessible. En revanche, SERVEUR_A peut parfaitement se connecter à SERVEUR_B. Si CLIENT peut se connecter à SERVEUR_A, il peut ensuite se connecter à SERVEUR_B depuis SERVEUR_A.

Connexion par rebond
Connexion par rebond

Depuis CLIENT :

ssh USER_A@IP_SERVEUR_A

Une fois connecté à SERVEUR_A :

ssh USER_B@IP_SERVEUR_B

Cette méthode est applicable quel que soit le nombre de serveurs intermédiaires. Néanmoins, plutôt que de répéter une même commande à chaque fois, il est possible de se connecter à SERVEUR_B depuis CLIENT — en passant par SERVEUR_A — en une seule fois :

ssh -J USER_A@IP_SERVEUR_A USER_B@IP_SERVEUR_B

Ces premiers cas d'usages sont très simples et ne devraient pas poser de problème. Nous verrons plus tard comment traiter des cas plus complexes, et comment remplacer l'authentification par mot de passe par une authentification cryptographique.

Article sous licence Creative Commons BY-SA 3.0 France.

Vus : 1006
Publié par Cyprien Pouzenc : 27