TUXANANTES FORMATION

http://tuxanantes.free.fr/

Connexion SSH ( Linux ->Linux, Putty ->Linux )

Connexion par SSH


Objectif de cet article

Principe de ssh

Mise en oeuvre

1. Mise en oeuvre de ssh dans le cadre d'une connexion entre 2 machines Linux ( ou Unix )


2. Mise en oeuvre de ssh dans le cadre d'une connexion sur un serveur Linux à partir de Windows avec putty

a. Utilisation de la clé privée générée en 1. à partir de Linux

b. Utilisation d'une clé privée générée à partir de Puttygen





Objectif de cet article

Présenter et décrire la mise en oeuvre d'une connexion ssh entre :


Principe de ssh

Pour éviter qu'un message ne soit lu par un tiers lorsqu'il transite sur le réseau ou sur le Web, il faut le coder (chiffrer) au moyen d'une clé de chiffrement. Le correspondant devra le décoder pour le rendre compréhensible.

Deux types de chiffrement :

Chiffrement à clé publique et clé privée

L'algorithme est dit asymétrique, car il met en jeux deux clés différentes.

Le destinataire d'un message possède donc deux clés :

La connaissance d'une clé ne permet pas de déduire la seconde.
La clé de décryptage étant secrète, unique et conservée par celui qui lit le message, personne d'autre n'en a connaissance.
Dans la pratique, pour envoyer un message à un correspondant, il suffit de se procurer sa clé publique et de coder le message avec. Il y a donc réduction du nombre de clés nécessaires.
Les algorithmes connus sont RSA et DSA



Combinaison des algorithmes symétriques et asymétriques

L'inconvénient de l'algorithme asymétrique réside dans le temps de déchiffrement particulièrement long (100 à 1000 fois plus qu'avec un algorithme symétrique).
Pour accélérer les traitements, les systèmes combinent généralement les deux principes :

Les algorithmes symétriques connus sont DES et AES.

Algorithme de Diffie-Hellman

Cet algorithme permet à deux interlocuteurs de constituer entre eux une clé secrète au moyen de deux informations qu’ils s’échangent. Même si les deux informations sont interceptées, il est très difficile de reconstituer la clé de cryptage. Cette procédure qui permet l'échange de clés est utilisée pour initier des communications protégées.

Longueur de clé

L'évolution de la puissance des ordinateurs des délinquants allant de paire avec celle des utilisateurs, les algorithmes doivent devenir de plus en plus complexes et les clés de plus en plus longues. On estime actuellement qu'il faut pour être en sécurité :

La législation française n'autorisait avant 1999 que des chiffrements à clé jusqu'à 40 bits, elle autorise 128 bits actuellement.



1. Mise en Oeuvre dans le cadre d'une Connexion entre 2 machines Linux ( ou Unix )

La configuration décrite ici se veut le minimum à mettre en oeuvre pour assurer cette connexion, pour une configuration plus sécurisée, il sera nécessaire de faire des choix plus spécifiques


On plante le decor :

Deux machines sous Linux en l'occurence sous Fedora 6, sur lesquelles sont installés les paquets suivants :

[root@fedora1 ~]# rpm -qa| grep ssl

openssl-0.9.8b-8

[root@fedora1 ~]# rpm -qa| grep ssh

openssh-clients-4.3p2-10

openssh-askpass-4.3p2-10

openssh-4.3p2-10

openssh-server-4.3p2-10


Je veux que le compte « root » de la machine fedora1 puisse ouvrir une session en utilisant le compte « root » de la machine fedora3 sans avoir à renseigner de mot de passe et biensur en cryptant les données echangées entre les 2 machines ( c'est la vocation de ssh ).

root sur fedora1 va générer un couple de clé privée/public.

La clé privée sera conservée sur fedora1

La clé publique sera diffusée sur toutes les machines sur lesquelles root de fedora1 voudra se connecter.


Génération du couple de clés :

[root@fedora1 ~]# ssh-keygen

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

41:a7:b0:25:7d:fa:2b:d0:55:86:7f:01:8a:70:15:60 root@fedora1.linux.tux


[root@fedora1 .ssh]# ll

total 40

-rw------- 1 root root 1675 mar 25 16:01 id_rsa

-rw-r--r-- 1 root root 404 mar 25 16:01 id_rsa.pub


id_rsa -----> contient la clé privée ( a conserver secrétement )

id_rsa.pub -----> contient la clé publique ( a diffuser sur toutes les machines sur lesquelles root de fedora1 voudra se connecter )


Diffusion de la clé publique de root de fedora1 pour se connecter sur le compte root de fedora3 :

Par le moyen de son choix ( email , repertoire partagé, ftp , copier – coller, ...) on transfère la clé publique de root / fedora1 sur la machine fedora3.

Cette clé publique doit être insérer dans le fichier /root/.ssh/authorized_keys ( eventuellement à la suite de clés déjà existantes)


Dans mon exemple , je transfert cette clé publique, par copier-coller entre deux fenêtres ouvertes avec un émulateur sous Windows : putty

J'ai ouvert une session sur chaque machine:

sur la machine fedora1 :

[root@fedora1 .ssh]# cat /root/.ssh/id_rsa.pub

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAzg69sIkWbC3lsBozUyPq9bwpxxo/G1Rb0ESqafFMqnrsJBpwhq5u7X4JDGwkV0QLArZgn8HHHz2KLRyutkgMZFlhH0VX0tcFyP/5PFiZDyF2zYOTi1tki7M2OMP3uW+bqY1zxQxvYhCQ01mPk1P7Gg6mXbBqDKbYd7d3kWspWE2piPKIme1S92wh7Mdbt7XhNBaJHZEHWw/ofKwp94Mv2E9vCzN/dIIkbR9OqxpcUXPzOMDyMsMqRm3bMXerQfFxlAhMJi1Oy1okUFJ0RnRYW9is62BklHrjkIlfunrDPgwo6SYMhFpNU2aQ3/OThG0lSmMGD+IzjiOsGdaf3B71KQ== root@fedora1.linux.tux


sur fedora3 :

[root@fedora3 .ssh]# vi /root/.ssh/authorized_keys

et je suis en mode insertion


Mise en surbrillance de la clé publique

Utilisation de ssh en environnement Linux et Windows_html_m1aa3a5af.jpg

et copier -coller dans le fichier /root/.ssh/authorized_keys ouvert avec l'editeur vi dans la fenêtre putty ouverte sur fedora3.


Resultat :

[root@fedora3 .ssh]# cat /root/.ssh/authorized_keys

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAzg69sIkWbC3lsBozUyPq9bwpxxo/G1Rb0ESqafFMqnrsJBpw

hq5u7X4JDGwkV0QLArZgn8HHHz2KLRyutkgMZFlhH0VX0tcFyP/5PFiZDyF2zYOTi1tki7M2OMP3uW

+bqY1zxQxvYhCQ01mPk1P7Gg6mXbBqDKbYd7d3kWspWE2piPKIme1S92wh7Mdbt7XhNBaJHZE

HWw/ofKwp94Mv2E9vCzN/dIIkbR9OqxpcUXPzOMDyMsMqRm3bMXerQfFxlAhMJi1Oy1okUFJ0RnR

YW9is62BklHrjkIlfunrDPgwo6SYMhFpNU2aQ3/OThG0lSmMGD+IzjiOsGdaf3B71KQ==root@fedora1.linux.tux


Utilisation de ssh

[root@fedora1 ~]# ssh fedora3

Last login: Sun Mar 25 17:53:14 2007 from fedora1.linux.tux

[root@fedora3 ~]#


( La commande ssh supporte de nombreuses options , consulter le man ).


2. Mise en oeuvre dans le cadre d'une connexion ssh sur un serveur Linux à partir de Windows avec putty

Pour les outils et les manipulations à réaliser , nous installerons sur Windows 2 logiciels :

putty et puttygen à récupérer sur: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html


Dans ce premier contexte on utilisera la clé privée précédement utilisée par root sur fedora1 pour se connecter à fedora3.

Il nous faut donc récuperer cette clé privée pour l'insérer dans putty.

Pour permettre à putty d'utiliser cette clé privé, on utilisera Puttygen pour la récupérer et la convertir dans un format exploitable par putty ( .ppk).


Ouvrir une session sur la machine sur laquelle se trouve la clé privé et l'on affiche la clé privé, ici fedora1 :

[root@fedora1 .ssh]# cat /root/.ssh/id_rsa

-----BEGIN RSA PRIVATE KEY-----

MIIEowIBAAKCAQEAzg69sIkWbC3lsBozUyPq9bwpxxo/G1Rb0ESqafFMqnrsJBpw

hq5u7X4JDGwkV0QLArZgn8HHHz2KLRyutkgMZFlhH0VX0tcFyP/5PFiZDyF2zYOT

i1tki7M2OMP3uW+bqY1zxQxvYhCQ01mPk1P7Gg6mXbBqDKbYd7d3kWspWE2piPKI

me1S92wh7Mdbt7XhNBaJHZEHWw/ofKwp94Mv2E9vCzN/dIIkbR9OqxpcUXPzOMDy

MsMqRm3bMXerQfFxlAhMJi1Oy1okUFJ0RnRYW9is62BklHrjkIlfunrDPgwo6SYM

hFpNU2aQ3/OThG0lSmMGD+IzjiOsGdaf3B71KQIBIwKCAQEAvGU/t1jECyKmHVnI

hoc9OHGFSFKC1yiOdUYYJlj1oy6OwexJn7Vsu+DyVIAhOdfPjXOLir/L/041MI9A

pqhF2Bc0Odj/1rX2qSSMGeqakX2ucsFw9HDQ9MEboZ06QyQ2jGQSEz6RuL6wTDSg

hrMuuLzv4KFLBEDF6cxQD+zymd72hoy++gDZ3xmdpndytvXKDak6Fq1tkgKfKuk9

NTl2zSM+c16tA9HiCqlYAfQ3GKp3HQ53scjEaRgROQcv+ekoGK6jomPlvnHHtAW0

Jp68zg6JA3k/Fq4lN9qsElrtMIoGTpydULPdrV1mw6FdibKJNmF22UKC/HTFc70C

PTxPiwKBgQDxKSajqm27P7hRvjE92WMo0ytTmKUGkNYYfCEf/LvoM3f24KXKaXBv

BTyL7qxnrfqKkJndq1GpK8PAAlB4/fmM8o0Kas6swezGbuUmdVyCFIZ7u6ksSWEg

ik2P97cyJDya15qb3+mZmPoFzT8diO2ZbniFYdDMmSU88m4DE+TmSQKBgQDavKH0

Dg6pa6/LwIN4ZjXjYfod/B5Q8obx6ZvvCJBttHjr3F4nzuQmLDmKekrYYH72YF9B

nP3qR7fIWMdVyqDgxnw+wcFewSDrdIcQxto3xfJLU+qbSktKUSSjjrAdrLiXK5Ak

lCv5RM5irLv3rORFyG/msHCnsN63MNHiVUAX4QKBgQDqRTt6awuCsu2RPGpZVtVa

28OwSyP3v+Xr5kwQcdscFL2t/szwg68Mw0IhiMS8fR9ExvvepmyVtXxUH4Ffl6H2

onph5Bk6G3hLvC8ParGi714RzD3wgcwQ+2FKBpS0Xbc3VRnZP+o9cAjSb5xl1XkY

tHUT210ehiQsk7tTcmlUuwKBgQDH/OvX0laMRTMDbi8O/l0nqgk//HN9NYKxSp0y

UPkT2DQK2BuSHD5OyVkuJqrUdXtk6mW4VQVofBW+fQ4FS4vGMdCuaAFAsJMgaood

96LxKgIY/EQ2NUwmsJaG6NuI2G5BEeLfnWoIeWw89bMrlsIT6nTwLEm944nMD2DO

7tuDiwKBgG1r/htM4uCE8U08wmpaJADHbasAb1Dr7bWSjY9z1Pkyscsr7qyQ3YMW

OHP/CtP7rES2oq6Q32EjL3yzawP7h8k29/0l5bxpUbBKNPXaCvhwhni0qcwroKdf

m8Nt69mgsF2Orn8UtVkAoR5+0aLYgJ7S6/2+VX5xDHISVBpRkTSL

-----END RSA PRIVATE KEY-----


On lance un editeur Windows , par exemple notepad et on fait un copier-coller de cette clé dans notepad:

Utilisation de ssh en environnement Linux et Windows_html_7d73d86e.jpg

On enregistre ce fichier, ici je l'ai enregistré dans « Mes Documents » sous le nom « ma clé privée.txt »


Lancer Puttygen :

Utilisation de ssh en environnement Linux et Windows_html_m70ffee7.jpg

Menu Conversions ---> Import key

Ouvrir le fichier « ma clé privée.txt » précedemment enregistré dans « Mes documents » :

Utilisation de ssh en environnement Linux et Windows_html_32de1e78.jpg

Utilisation de ssh en environnement Linux et Windows_html_6de71e75.jpg


Enregistrer cette clé privée pour putty :

Utilisation de ssh en environnement Linux et Windows_html_71753c04.jpg


Si l'on choisit de ne pas protéger cette clé privée par une pass-phrase, on clique Oui sur le message suivant

Utilisation de ssh en environnement Linux et Windows_html_m163e2a94.jpg

On enregistre cette clé, ici je l'enregistre sous le nom « ma clé privée.ppk » dans « Mes documents » :

Utilisation de ssh en environnement Linux et Windows_html_m53d9fc72.jpg

On en a terminé avec Puttygen, on lance putty :

Utilisation de ssh en environnement Linux et Windows_html_6eedd82c.jpg


Dans le champ « Host Name ( or IP Address ) : on saisit l'adresse IP ou le nom de la machine Linux sur laquelle on veut se connecter ( sous réserve que ce nom soit correctement résolu par un fichier hosts ou par DNS )

on choisit de se connecter sur le port 22 du serveur Linux , port du service ssh par defaut.

Et on choisit biensur d'utiliser le protocol SSH.


Dans la colonne « Catégory »,selectionner SSH puis Auth et avec le bouton Browse , pointer sur le fichier précédemment généré avec Puttygen :

Utilisation de ssh en environnement Linux et Windows_html_m4e2f4588.jpg


Si l'on veut ne pas avoir à saisir le nom de login:

dans la colonne Category ---> Connection ----> Data, dans le champ Auto-login username renseigner le nom de login avec lequel se connectera , en l'occurence : root

Utilisation de ssh en environnement Linux et Windows_html_4c525e90.jpg

On revient sur Session pour enregistrer ces différentes informations,

dans le champ Saved Sessions, je tape le nom sous lequel ces différentes informations seront sauvegardées

Puis bouton Open.

A la première ouverture de session :

Utilisation de ssh en environnement Linux et Windows_html_m5ef49e3e.jpg

Cliquer sur Oui

Utilisation de ssh en environnement Linux et Windows_html_m3f73b5a9.jpg

Lors des ouvertures de sessions suivantes, c'est la clé privée qui permettra l'autentification de l'utilisateur ( et non plus son mot de passe ) et c'est la combinaison de la clé privée et publique qui assurera le cryptage des données transitant par le réseau entre les deux postes .


Dans ce deuxième contexte on va utiliser la clé privée, non plus récupérée du système Linux mais générée avec puttygen.

Lancer puttygen, bouton Generate

Utilisation de ssh en environnement Linux et Windows_html_7555af07.jpg


et on bouge aléatoirement la souris dans l'espace blanc de la fenêtre.

Utilisation de ssh en environnement Linux et Windows_html_17992330.jpg



Le couple de clés privée et publique a été créé. On les sauvegarde.



Exportation de la clé publique sur la machine Linux sur laquelle on va se connecter, ici toujours fedora3.

Copier-coller la clé publique affichée dans la fenêtre précédente dans le fichier /root/.ssh/authorized_keys sur fedora3 :

Utilisation de ssh en environnement Linux et Windows_html_m5e1b81ee.jpg

Utilisation de cette nouvelle clé privée :

Lancer putty

Plutôt que de recréer une nouvelle configuration , je vais réutiliser la configuration précedemment sauvegardée sous le nom « fedora3 » et modifier simplement la clé privée :

Load ---> fedora3


Utilisation de ssh en environnement Linux et Windows_html_12c9a235.jpg


Category SSH , Auth

Utilisation de ssh en environnement Linux et Windows_html_c10b6b7.jpg

Bouton Open , pour utiliser ce nouveau couple de clé.

Utilisation de ssh en environnement Linux et Windows_html_61b0127f.jpg