Accueil > Divers, Tutos > L’outil indispensable SSH

L’outil indispensable SSH

Beaucoup de personnes connaissent au moins de nom SSH. Cet outil cache pourtant certains secrets très pratiques et bien souvent totalement inconnus.

Aujourd’hui, il est courant de multiplier les accès distants sur des machines. Si Telnet et les r-commandes répondaient à ce besoin, le besoin de sécurité les a écartés de la course. SSH permet donc d’accéder à une console distante de manière totalement sécurisée. Nous verrons dans ce tutoriel comment utiliser un client SSH mais aussi comment utiliser le SSH-agent pour faciliter le travail de tous les jours en s’identifiant rapidement.

La plupart du temps openSSH est déjà installé. Si cela n’est pas le cas il vous suffit de tapper dans une console :

sudo yum install openssh openssh-clients

ou

sudo apt-get install openssh-client

Pour se connecter simplement sur un serveur il vous suffit de tapper :

ssh <login>@<machinedist>

login est le nom du compte que vous souhaitez utiliser et machinedist représente l’adresse IP ou le nom de la machine visée. Lors d’une premiere connexion, un message décrivant que la machine distante est inconnue vous sera retournée. Ensuite SSH vous demande s’il doit continuer ou pas. Répondez ‘Yes’ pour continuer. Cette étape permet de vérifier que la machine que vous souhaitez contacter et bien celle qui vous répond. Pour cela SSH utilise une empreinte (fingerprint en anglais) correspondant ni plus ni moins à une suite de valeurs héxadécimales. Une fois acceptée, cette empreinte sera ajoutée à votre liste d’hôtes connus.

L’étape suivante est l’authentification. Par défaut, SSH utilise une authentification par mot-de-passe. Ca n’est pas la seule manière de s’authentifier. On peut utiliser une paire de clés publique/privée. La première est une clé que vous partagerez et copierez partout où vous souhaiteriez vous connecter (nous y reviendrons un peu plus tard), la seconde est en quelque sorte l’équivalent de votre nouveau mot-de-passe.

Pour générer une paire de clés, OpenSSH propose un outil. en tapant dans votre console :

ssh-keygen

vous pourrez créer simplement une paire. Vous pouvez, grâce à l’option ‘-t’ préciser quel type de clés vous souhaitez. Sachez que SSH1 utilise généralement des clés RSA1, et SSH2 des clés DSA.

ssh-keygen -t dsa

Le générateur va vous demander où sauvegarder les clés et vous demander une passphrase. Cette passphrase n’améliore en rien la clé ou la sécurité des échanges. Elle permet juste d’empêcher quelqu’un qui récupèrerait votre paire de clés de l’utiliser. C’est une phrase protégeant la clé. Lorsque le générateur a fini vous obtenez 2 fichiers :

  • id_dsa ou id_rsa : la clé privé
  • id_dsa.pub ou id_rsa.pub : la clé public

Nous allons désormais donner notre clé public à l’ordinateur distant, celui auquel nous souhaitons nous connecter. Pour ce faire utilisons cette commande :

ssh-copy-id -i ~/.ssh/id_dsa.pub <login>@<machinedist>

Pour utiliser notre clé et ainsi ne pas avoir à rentrer de mot-de-passe, il suffit désormais d’entrer :

ssh -i ~/.ssh/id_dsa <login>@<machinedist>

Nous pouvons encore améliorer notre confort par plusieurs procédés. Dans le cas où vous avez protégé votre clé privée par une passphrase, à chaque connexion cette passphrase vous est demandée. Ensuite il peut paraître ennuyeux de devoir tapper l’emplacement du certificat, le login et le nom de la machine distance (voir son IP…). Pas de panique, SSH répond à tous vos problèmes ;)

D’abord créons un fichier ~/.ssh/config dans lequel nous placerons :

Host <NomDeConnexion>
User <login>
HostName <machinedist>

NomDeConnexion représente un identifiant aléatoire vous permettant d’identifier le compte et la machine définient respectivement par login et machinedist.
Ainsi pour se connecter il suffira de tapper :

ssh -i ~/.ssh/id_dsa <NomDeConnexion>

Enfin, laissons SSH gérer nos clés et nous identifier avec la bonne clé. Pour ce faire, il suffit d’utiliser ssh-agent. Pour l’utiliser, initialisez votre terminal en le précédent de « ssh-agent » comme ceci :

# Voici quelques exemples d'initialisation. Adaptez a votre besoin
/usr/bin/ssh-agent gnome-terminal
/usr/bin/ssh-agent zsh
/usr/bin/ssh-agent bash

Une fois le terminal lancé, vous aurez besoin d’importer votre(vos) clé(s) grâce à :

ssh-add

ssh-add va ajouter votre clé ~/.ssh/id_rsa à la liste des clés utilisables par ssh-agent. Pour importer une clé supplémentaire il faut juste lui préciser où les trouver comme ceci :

ssh-add ~/.ssh/id_rsa_actinux1 ~/.ssh/id_rsa_actinux2

Dans le cas d’une protection de clé par passphrase, elle vous sera demandée (une seule fois ;) ).
Vous pouvez lister à tout moment l’ensemble des clés contenues dans votre ssh-agent de part la commande :

ssh-add -l

Ensuite plus besoin de préciser le fichier de clé à utiliser pour se connecter :

ssh <NomDeConnexion>

Pour terminer je vous conseillerez de placer dans votre fichier rc (.zshrc ou .bashrc par exemple) votre ou vos ssh-add et d’ajouter le ssh-agent sur les raccourcis utiles (le gnome-terminal par exemple). Ainsi la seule étape que vous aurez à passer 1 fois par jour c’est d’entrer votre/vos passphrases à l’ouverture de votre terminal.

ati Divers, Tutos , ,

  1. Pas encore de commentaire
  1. Pas encore de trackbacks