S'authentifier sans mot de passe avec SSH

Pour la sauvegarde de mes données, j'utilise ce script qui copie mes données local puis les envoient sur un serveur distant. Pour que le script soit pleinement fonctionnel, il faut avant tout partager les clés publique. Cela permettra par la suite que le script ne demande plus le mot de passe.

Depuis la machine locale

La première étape consiste à créer la paire de clé publique et privée :

$ ssh-keygen
Generating public/private dsa key pair.
Enter file in which to save the key (/toto/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /toto/.ssh/id_dsa.
Your public key has been saved in /toto/.ssh/id_dsa.pub.
The key fingerprint is:
cf:ff:46:ba:5f:97:a9:84:20:9d:a9:6c:5f:da:dd:8b toto@hote_local
The key's randomart image is:
+---[DSA 1024]----+
|                 |
|                 |
|                 |
|        . o      |
|       .S=       |
|      . oo. . . o|
|       +  o. + oo|
|      o.o o.o o..|
|     ....E o+*o  |
+-----------------+

Les fichiers suivant ont été créés dans ~/.ssh/ :

  • id_dsa (clé privé)
  • id_dsa.pub (clé publique)

La seconde étape consiste à soumettre la clé publique au serveur distant :

$ ssh-copy-id mon_utilisateur@machine_distante

L'accès à la machine distante sans avoir besoin de s'authentifier est maintenant possible. :)

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/mon_utilisateur/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
mon_utilisateur@machine_distante's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'mon_utilisateur@machine_distante'"
and check to make sure that only the key(s) you wanted were added.

Plus d'infos à cette page : https://wiki.debian.org/fr/SSH

Sans l'usage du prompt

Admettons que nous voulons que l'utilisateur Alice ait accès sans mot de passe au serveur distant. Nous lançons toutes ces commandes depuis la machine cliente :

sudo useradd -m -s /bin/bash -g users alice
sudo mkdir /home/alice/.ssh
sudo chown alice:users /home/alice/.ssh
sudo -u alice ssh-keygen -N "" -f /home/alice/.ssh/id_rsa
sudo -u alice sshpass -p alice ssh-copy-id -i /home/alice/.ssh/id_rsa.pub alice@server.local -o StrictHostKeyChecking=no