Vous êtes sur la page 1sur 18

SSH sous Linux

LASFAR Salim
OpenSSH chiffre tout le trafic (mots de passe y compris),
via une combinaison astucieuse de chiffrement
symtrique et asymtrique. OpenSSH fournit galement
d'autres mthodes d'authentification alternatives au
traditionnel mot de passe.
Comme son nom l'indique, OpenSSH est dvelopp dans
le cadre du projet OpenBSD.

LP-R2SI:
Administration des
rseaux et scurit
sous Linux.
Encadr Par : Mr M.EL KIRAM

Authentification SSH sans mot de passe


par change de clefs RSA

Introduction:
Lorsque lon se connecte en SSH sur une machine
Linux (ou Unix) pour effectuer des commandes
distance depuis un script ou pour effectuer des tches
administratives, il peut tre trs intressant dviter
dutiliser une authentification par mot de passes,
souvent simplistes. Dautant plus dans le cas de
script, ou mme lorsque lon utilise des mot de passes
labors, il est souvent ncessaire de mettre le mot de
passe dans le script, donc en clair, ce qui videment
rend inutile le fait dutiliser des mot de passes labors.
Lutilisation de Kerberos ou de certificats peut palier lutilisation de mot de
passes et donc rendre lauthentification bien plus scurise. Une autre
alternative et lutilisation de clefs RSA pour lauthentification SSH.
Lauthentification RSA pour les connexions SSH se base sur un change de clefs
et la signature de jetons dauthentification au moment de la connexion.

Authentification RSA
Le principe de lauthentification RSA se base sur la signature de jetons
dauthentification lors de la connexion. Le client dispose dune paire de clefs
dauthentification : une clef prive quil est le seul dtenir et une clef publique
que les serveurs utiliseront pour vrifier lidentit du client. Au moment de
lauthentification, le client signe un jeton avec sa clef prive et le donne au
serveur sur lequel il a besoin de sauthentifier. Le serveur doit avoir accs la
clef publique du client pour dcrypter le jeton dauthentification. Comme lors
de lutilisation dun algorithme de cryptage, seule la clef publique correspondant
la clef prive permet de dcrypter le message : cest le principe de signature
numrique. Le serveur, avec la clef publique, peut donc vrifier la signature du
jeton dauthentification, en ayant lassurance que seul le client a pu gnrer la
signature (le client est le seul dtenir la clef prive).

Installation
OpenSSH :
Tout se passe dans le fichier /etc/ssh/sshd_config, normalement
l'authentification par clef publique est active par dfaut, mais dans le cas
contraire, a se passe ici :
RSAAuthentication
#PubkeyAuthentication
AuthorizedKeysFile

La

deuxime

ligne

yes
yes
.ssh/authorized_keys

indique

trouver

les

clefs

publiques.

Cette ligne est pour interdire l'authentification par mot de passe:


PasswordAuthentication
no

Voici le fichier de configuration /etc/ssh/sshd_config :

Les Clefs sous windows


Pour gnrer les clefs, le plus simple est d'utiliser la suite PuTTY (tous les outils
clients SSH pour UNIX et Windows).

Gnration des clefs :


Avec Puttygen, le bouton Generate va gnrer le couple clef prive/publique
(pour de raisons de scurit, il faut mettre un mot de passe pour protger la clef
prive!). Ensuite, les enregistrer.

On gnre nous cls :

Il faut secouer la souris pour gnr des nombres alatoires pour cre les
cls :

Aprs on copie la cl publique pour la coller dans le fichier


authorized_keys.txt on va le coller sur notre serveur :

NB : On enregistre les deux cl (priv et publique) par les boutons Save


public key et Save private key .
Voici la cl coll dans le fichier authorized_keys.txt :

Voici les cls que on a gnr et aussi la cl publique quon va utiliser pour le
fichier authorized_keys :

Installation de la clef sur le serveur :


Il faut faire un copier-coller du bloc commenant par ssh-rsa (ou ssh-dss selon
le type de clef gnre) dans le fichier ~/.ssh/authorized_keys (~ est le rpertoire
home de l'utilisateur que l'on veut authentifier par clef publique). Attention, il
faut faire attention ce que des caractres parasites ne s'insrent pas dans le
fichier!
Pour des raisons de scurit, il faut restreindre le plus possible les droits sur ce
fichier, soit un droit de lecture/criture pour l'utilisateur seulement. De mme
pour la clef prive.
Et pour faire cela on Mount la cl -qui contient le bloc commenant par
ssh-rsa et les autres cls- dans la machine virtuelle comme suite :

Voici le nom de la partition de notre cl USB dans le dossier /dev :

On cre un dossier qui sera le point de montage :

On Mount la cl avec la commande :


# mount chemin_de_ priphrique point_de_montage

On vrifie:

On change le nom de fichier de authorized_keys.txt au authorized_keys car


linux ne gre pas les extensions avec la commande :
# mv authorized_keys.txt authorized_keys

On cre le rpertoire cach .ssh qui va contenir le fichier authorized_keys :

Aprs on copie le fichier dans le rpertoire de lutilisateur quon veut


lauthentifier :

On vrifie :

Utilisation d'un agent SSH (pas obligatoire, loin de


l) :
Pour les utilisateurs devant jongler entre les sessions SSH diffrentes, il est
difficile de se souvenir de tous les mots de passe, c'est pourquoi les agents SSH
sont l pour s'en souvenir.
Un agent SSH va en fait garder en mmoire la clef prive
dchiffr pour se connecter directement au serveur SSH sans
intervention de l'utilisateur.
Pageant est l'agent de la suite PuTTY, il suffit de faire "Add
key" et de slectionner sa clef prive pour qu'il la dchiffre.
Attention la scurit de cette solution, il ne faut pas oublier que n'importe
quelle personne qui utilise votre session peut accder sans rien demander aux
serveurs!
De plus sous Windows, il est parfois possible de retrouver la clef prive
dchiffre dans le fichier de swap du disque dur (faille de scurit de windows
connue depuis des annes et touchant tous les logiciels tournant sur cet OS).

Test de la connexion :
Le moment de vrit!
Il faut configurer une session SSH avec PuTTY et mettre l'emplacement de la
clef prive dans Connection -> SSH -> Auth pour que Pageant sache quelle clef
utiliser (si Pageant ne tourne pas, PuTTY demande lui mme le mot de passe de
la clef prive, mais ne s'en souvient pas ensuite).
Si le client indique un message du style : Server refused our key , il faut vrifier
toute la configuration ( configuration du serveur, le nom de l'utilisateur, bonne
clef prive, bonne clef publique copie-colle ).
Dans le cas contraire, le client doit indiquer directement le prompt du sytme
distant et c'est gagn!

On ajoute une nouvelle cl :

On spcifie le chemin de la cl dans notre systme :

On tape le mot de passe qui protge la cl :

On cre une nouvelle session :

Commenons par ouvrir PuTTy puis prcisons le nom de login utiliser


pour la connexion SSH dans longlet Connection > Data :

Puis ajoutons la clef prive utiliser pour la connexion SSH dans


longlet Connection > SSH > Auth (bouton Browse de la section
Authentication parameters) :

Il nous reste spcifier le nom du serveur o lon veux se connecter (et o


on a pralablement ajouter la clef publique dans le fichier de clefs
autorises), on peut mme se sauvegarder la connexion pour la prochaine
fois :

Et on utilise la session enregistr :