Connexion par clefs SSH - exemple

Voir aussi : Notes clefs SSH

Première connexion

Client

ssh utilisateur1@192.168.205.21

Comme c'est la première fois que vous vous connectez à cette machine, l'empreinte n'est pas encore connue.C'est pour éviter qu'un pirate se fasse passer pour votre serveur.

Répondre yes

The authenticity of host '192.168.205.21 (192.168.205.21)' can't be established.
ECDSA key fingerprint is 3e:4b:eb:d2:cb:90:ad:f7:64:b5:2e:eb:9f:d8:3a:ab.
Are you sure you want to continue connecting (yes/no)? yes

ssh config

Pour nous simplifier la vie et ne pas taper à chaque fois l'IP, le numéro de port et l'utilisateur, nous allons enregistrer tout cela dans un fichier de config

Client

Host serv1
Hostname 192.168.205.21
User utilisateur1
Port 22

Le caractère '~' signifie le HOME de l'utilisateur, c'est-à-dire son répertoire par défaut (voir /etc/passwd)

Maintenant nous pouvons nous connecter

Client

ssh serv1

Connexion par clef

Avons-nous déjà une paire de clefs ?

Client

ls -l ~/.ssh/id_*

Si non (aucun fichier trouvé), créons une paire

Client

ssh-keygen #ssh-keygen -t ecdsa -b 521

Ou par script

if [ ! -e ~/.ssh/id_rsa ] then ssh-keygen -q -N "" < /dev/zero fi

Appuyer trois fois sur entrée (valeur par défaut)

Client

ls -l ~/.ssh/id_*

-rw------- 1 jean jean 1679 mai 12 15:44 /home/jean/.ssh/id_rsa
-rw-r----- 1 jean jean 394 mai 12 15:44 /home/jean/.ssh/id_rsa.pub

Nous avons deux fichiers :

id_rsa.pub : Clef publique RSA, le fichier peut être distribué à tous, même sur le web

id_rsa : Clef privée RSA, fichier à garder précieusement. À ne jamais distribuer à personne

Jetons un œil à la clef publique

Client

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDgQYGWtV+70Zegq7gVS+h/OsSi3tvhcp3o1HemKhkORlbLSSMM60dkhid5rcy9e/NUhMElbpBE46CkRqvRLKFsqMwTkEVJoRkjGXi/w/mHu/1RqSVUBwFkXL3lJSrWAHgV1T5kXeq9z8LgoJgCdEfb4UF9XSYasPhaL6wT9T+TJ6VfEhKDOhV5IcJ8J6HQG0MW3NnAztVnHj4a8ZuAcVR9/cs+hWpQiEuixkSmsUHN7b6XJ+JOJiP3MBodIfMPEfd1IDLHA8uOuqGWeQPeUh0nPcLlnJnJ6cw40Ejhg80KCSFN8uOVigWwAimo0FCGxNNYqAtTDipuK5l0JKUG5YKV jean@debian2

Autorisation

Maintenant j'aimerais bien pouvoir me connecter sans mot de passe à serv1 (utilisateur1@192.168.205.21).

Rien de plus simple, je vais déposer ma clef publique (on ne copie jamais sa clef privée !) dans le HOME de utilisateur1 sur 192.168.205.21.

Pour être exacte il faut ajouter la clef publique dans ~/.ssh/authorized_keys.

Serveur

mkdir ~/.ssh
cat <<EOF >> /root/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDgQYGWtV+70Zegq7gVS+h/OsSi3tvhcp3o1HemKhkORlbLSSMM60dkhid5rcy9e/NUhMElbpBE46CkRqvRLKFsqMwTkEVJoRkjGXi/w/mHu/1RqSVUBwFkXL3lJSrWAHgV1T5kXeq9z8LgoJgCdEfb4UF9XSYasPhaL6wT9T+TJ6VfEhKDOhV5IcJ8J6HQG0MW3NnAztVnHj4a8ZuAcVR9/cs+hWpQiEuixkSmsUHN7b6XJ+JOJiP3MBodIfMPEfd1IDLHA8uOuqGWeQPeUh0nPcLlnJnJ6cw40Ejhg80KCSFN8uOVigWwAimo0FCGxNNYqAtTDipuK5l0JKUG5YKV jean@debian2
EOF
chmod 600 ~/.ssh/authorized_keys

Attention, pour des raisons de sécurité les droits sur ~/.ssh/authorized_keys doivent être 600 (Lecteur-écriture que pour le propriétaire) et le fichier doit appartenir à l'utilisateur concerné.

Passe-phrase

partie à rédiger

Que se passe t-il si votre clef privée tombe entre de mauvaises mains ?Pour se prémunir, il est possible de chiffrer la clef SSH privée avec une passe-phrase.

Et pour éviter de taper à chaque fois la passe-phrase, on utilise un “agent”, aussi la passe-phrase ne sera demandée qu'une seule fois.