Vous êtes sur la page 1sur 15

SSH

SSH
Description
 SSH signifie Secure SHell
 Protocole qui permet de faire des
connexions sécurisées (i.e. cryptées)
entre un serveur et un client SSH.
 La totalité de la transaction entre un
client et le serveur est cryptée.
L'établissement d'une connexion
SSH
 Un serveur SSH dispose d'un couple
de clés RSA stocké dans le répertoire
/etc/ssh/ et généré lors de
l'installation du serveur.
 Le fichier ssh_host_rsa_key contient la
clé privée et a les permissions 600.
 Le fichier ssh_host_rsa_key.pub
contient la clé publique et a les
permissions 644.
L'établissement d'une connexion
SSH
1. Le serveur envoie sa clé publique au
client.
2. Le client génère une clé secrète et
l'envoie au serveur, en cryptant
l'échange avec la clé publique du
serveur.
3. Le serveur décrypte la clé secrète en
utilisant sa clé privée, ce qui prouve
qu'il est bien le vrai serveur.
L'établissement d'une connexion
SSH
1. Pour le prouver au client, il crypte un
message standard avec la clé secrète
et l'envoie au client.
2. Une fois la clé secrète échangée, le
client et le serveur peuvent alors
établir un canal sécurisé grâce à la clé
secrète commune (cryptographie
symétrique).
3. La canal sécurisé reste en place
jusqu'à ce que l'utilisateur se
déloggue.
L'établissement d'une connexion
SSH
 La seule contrainte est de s'assurer
que la clé publique présentée par le
serveur est bien sa clé publique.
 demander à l'administrateur du
serveur quelle est le fingerprint de la
clé publique du serveur.
 Le fingerprint d'une clé publique est
une chaîne de 32 caractères
hexadécimaux unique pour chaque clé.
 il s'obtient grâce à la commande ssh-
Installation du client

 Le client SSH est disponible dans le


paquet openssh-client.
 /etc/ssh/ssh_config: fichier de
configuration client SSH.
 Les informations spécifiques à un
utilisateur sont stockées dans son
répertoire personnel à
 l'intérieur du répertoire ~/.ssh/:
Installation du client

 authorized_keys ou authorized_keys2:
ce fichier contient une liste de clés
publiques "autorisées".
 id_dsa: contient l'identité
d'authentification DSA de l'utilisateur.
 id_dsa.pub: la clé DSA publique de
l'utilisateur.
 id_rsa: la clé RSA publique utilisée par
sshd pour la version 2 du SSH.
Installation et Configuration du
serveur SSH
 # apt-get install openssh-server
 /etc/ssh/sshd_config:
 Port 22: Signifie que le serveur SSH
écoute sur le port 22.
 PermitRootLogin yes: Signifie que vous
pouvez vous logguer en root par SSH.
 X11Forwarding yes: Signifie que vous
allez pouvoir travailler en export display
par SSH.
Authentification par mot de
passe
 ssh login@nom_DNS_du_serveur_SSH
 Si c'est la première connexion SSH
depuis ce client vers ce serveur, il
vous demande si le fingerprint de la
clé publique présentée par le serveur
est bien le bon.
 la clé publique du serveur est alors
rajoutée au fichier
~/.ssh/known_hosts.
 Entrez votre mot de passe.
Authentification par clé
Générer ses clés
 ssh-keygen -t dsa
 Les clés générées (pub et priv) ont par
défaut une longueur de 1024 bits.
 la clé privée est stockée dans le fichier
~/.ssh/id_dsa avec les permissions
600
 la clé publique est stockée dans le
fichier ~/.ssh/id_dsa.pub avec les
permissions 644.
 il vous demande une pass phrase.
Authentification par clé
Autoriser votre clé publique
 Copier votre clé publique dans le
fichier ~/.ssh/authorized_keys de la
machine distante.
 ssh-copy-id -i ~/.ssh/id_dsa.pub
login@nom_DNS_du_serveur
 ssh login@nom_DNS_du_serveur_SSH
Transfert de fichiers par SSH

 scp test1.txt toto@ordi1.exemple.org:


 scp toto@ordi2.exemple.org:test2.txt .
 scp
toto@ordi2.exemple.org:/usr/local/*.t
xt test-scp
 scp -r test-scp
toto@ordi1.exemple.org:incoming
 Utiliser lftp: lftp
sftp://toto@ordi1.exemple.org
Se logguer par SSH sans taper
de mot de passe
 ssh-agent : ce programme tourne en
tâche de fond et garde la clef en
mémoire.
 La commande ssh-add permet de
donner sa clé à ssh-agent.
 quand vous utilisez le client SSH, il
contacte ssh-agent pour qu'il lui donne
la clé.
Faire des tunnels SSH

 C'est un moyen simple de crypter


n'importe quelle communication TCP
entre deux machine.
 Tunnel SSH pour une connexion HTTP
vers la machine serveur.exemple.org:
 ssh -L 2012:serveur.exemple.org:80
toto@serveur.exemple.org
 http://localhost:2012