Se connecter par SSH sans taper de mot de passe

© Christian PAULUS. Document créé le 4 janvier 2011 , mis à jour le 4 janvier 2011.

Ce qui est simple est toujours faux. Ce qui ne l'est pas est inutilisable. Paul Valéry (Mauvaises pensées)

Accueil du site > Astuces > Unix > Se connecter par SSH sans taper de mot de passe

ssl / FreeBSD 8

Se connecter en ssh, ou ses fidèles compagnons scp et sftp, nécessitent d’entrer son mot de passe à chaque connexion.

Mais si le besoin est de simplifier la démarche (celui qui « svn » en shh me comprend), le plus simple est de créer une clé publique.

Cette clé publique permet également la création d’automates en shell via le cron, sans laquelle l’opération est simplement impossible (sauf à utiliser des stratagèmes complexes à maintenir, du style attendre le prompt qui demande le mot de passe, etc.).

C’est quoi cette clé publique ?

Pour faire court :

  • vous créez une empreinte, une photo, de votre compte/ordinateur dans deux grandes phrases encryptées, une clé privée et une clé publique ;
  • vous vous connectez en ssh sur la machine distante à l’aide de votre mot de passe et y recopiez votre clé publique ;
  • A la prochaine connexion, ssh s’occupe de tout. Il n’est plus nécessaire d’entrer le mot de passe.

Besoin d’en savoir plus sur ssh ? Voir sur wikipedia, est un bon début.

Par contre, il faut bien noter qu’une clé est attachée à un seul compte via sa machine. Si vous changez d’ordinateur, le mot de passe sera demandé. Et si vous désirez retrouver cette facilité, il faut regénérer une clé pour ce nouveau compte.

Comment créer sa clé publique

Le terminal est indispensable. Pour MacOS, il se trouve dans le dossier /Applications/Utilitaires/Terminal.app. En version US, ça donne /Applications/Utilities/Terminal.app.

Pour générer une clé rsa (ici, l’exemple est donné pour le compte root) :

ssh-keygen -t rsa

La commande répond :

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):

Pressez retour chariot (return). La commande répond :

Enter passphrase (empty for no passphrase):

Sauf cas exceptionnel, vous n’avez pas besoin de cette passphrase (dans cet exemple, il est considéré que vous êtes déjà connecté en ssh sur votre machine, et que donc votre clé privée est protégée). Pressez donc deux fois « retour chariot » (return).

Allez dans le répertoire .ssh qui se trouve dans votre ... répertoire ($HOME). Deux fichiers viennent d’être créés :

  • id_rsa
  • id_rsa.pub

Votre clé publique se trouve dans le fichier id_rsa.pub. Editez ce fichier :

cat id_rsa.pub

et copiez son contenu.

Connectez-vous via ssh sur le serveur distant. Il va vous demander le mot de passe. Ce sera peut-être la dernière fois :-)

Sur ce serveur, il faut recopier votre clé publique dans le fichier .ssh/authorized_keys.

Si le dossier .ssh n’existe pas, créez-le !

Si le fichier .ssh/authorized_keys n’existe pas, créez-le !

Ce fichier .ssh/authorized_keys peut contenir plusieurs clés publiques. C’est un fichier au format texte. Recopiez vos clés publiques les unes à la suite des autres.

Plussoyez !

Les forums sont fermés.