Utiliser des clés SSH sous Linux

From CC Doc
Jump to navigation Jump to search
This page is a translated version of the page Using SSH keys in Linux and the translation is 65% complete.
Outdated translations are marked like this.
Other languages:
English • ‎français

Page enfant de SSH

Créer une paire de clés

Vérifiez si vous avez déjà une paire de clés avant d'en créer une nouvelle. Si vous avez déjà une paire de clés, mais ne vous souvenez pas où vous l'avez utilisée, il est préférable d'en créer une nouvelle parce que vous ne devriez pas utiliser une clé sans connaître son degré de sécurité.

Les paires de clés se trouvent habituellement dans le répertoire .ssh/ de votre espace /home. Par défaut, le nom de la clé est composé du préfixe id_ suivi de son type (rsa, dsa, ed25519); la clé publique possède le suffixe .pub. Un exemple commun serait id_rsa et id_rsa.pub.

Si vous avez besoin d'une nouvelle paire de clés, vous pouvez la générer avec la commande ssh-keygen.

[name@server]$ ssh-keygen -b 4096 -t rsa

(Dans cet exemple, on demande explicitement une clé RSA de 4Kbits, ce qui est un choix raisonnable.)

Le résultat sera semblable à ceci :

Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/username/.ssh/id_rsa.
Your public key has been saved in /home/username/.ssh/id_rsa.pub.
The key fingerprint is:
ef:87:b5:b1:4d:7e:69:95:3f:62:f5:0d:c0:7b:f1:5e username@hostname
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|           .     |
|            o .  |
|        S    o o.|
|         .  + +oE|
|          .o O.oB|
|         .. +oo+*|
|          ... o..|
+-----------------+

À l'invite, entrez une phrase de passe. Si vous avez déjà sauvegardé une paire de clés avec leurs noms par défaut, vous voudrez donner un nom différent au fichier pour éviter de détruire les clés existantes.

Installer la clé publique

Installing via CCDB

We encourage all users to leverage the new CCDB feature to install their SSH public key. This will make the key available to all our clusters. Grab the content of your public key (called id_rsa.pub in the above case) and upload it to CCDB as per instructions in SSH Keys Installing your key in the section "Using CCDB", STEP 3.


Le moyen le plus simple et le plus sécuritaire d'installer une clé pour un système à distance est par la commande ssh-copy-id.

ssh-copy-id -i mynewkey graham.computecanada.ca:

Dans cet exemple, on suppose que les clés sont mynewkey et mynewkey.pub et que le nom d'utilisateur local est le même que celui sur le système à distance.

The simplest, safest way to install a key to a remote system is using the ssh-copy-id command:

ssh-copy-id -i ~/.ssh/mynewkey.pub graham.computecanada.ca

This assumes that the new keypair is named "mynewkey" and "mynewkey.pub", and that your username on the remote machine is the same as your local username.

Au besoin, ceci peut être fait manuellement. En fait, ssh-copy-id ne fait pas vraiment de magie; la commande fait simplement la connexion à distance et place la clé publique dans .ssh/authorized_keys dans votre répertoire /home qui s'y trouve. L'avantage de ssh-copy-id est que des fichiers et répertoires sont créés si nécessaire et que toutes les permissions sont correctes. Vous pouvez faire cela vous-même en copiant le fichier de la clé publique sur le serveur à distance, ensuite

mkdir ~/.ssh
cat id_rsa.pub >> ~/.ssh/authorized_keys
chmod --recursive go-rwx ~/.ssh
chmod go-w ~

Avec SSH, les permissions côté client et côté serveur sont particulières; SSH ne fonctionnera pas sans les conditions suivantes :

  • Le fichier de la clé publique ne doit pas être accessible par les autres utilisateurs. chmod go-rwx id_rsa
  • Les autres utilisateurs ne doivent pas pouvoir écrire dans votre répertoire /home à distance. chmod go-w ~
  • Il en est de même pour vos clés à distance ~/.ssh et ~/.ssh/authorized_keys. chmod --recursive go-rwx ~/.ssh

Notez que pour déboguer les conditions à distance, vous aurez probablement besoin des privilèges admin sur le serveur distant.

Se connecter avec une paire de clés

  • Enfin, testez la nouvelle clé en connectant votre poste local au serveur avec la commande
    [name@server]$ ssh -i /home/ubuntu/.ssh/id_rsa USERNAME@ADDRESS
    • /home/ubuntu/.ssh/id_rsa indique le nom du fichier de la clé privée;
    • USERNAME est le nom de l'utilisateur sur la grappe;
    • ADDRESS est l'adresse du serveur.
  • Si vous avez les privilèges admin sur le serveur et que vous avez créé un compte pour un autre utilisateur, ce dernier devrait lui-même tester la connexion pour ne pas avoir à divulguer sa clé privée.

    ssh-agent

    Une fois que vous avez créé une paire de clés et installé la clé publique, vous pouvez vous connecter avec cette paire de clés. Malgré le fait qu'il est plus sécuritaire de vous connecter ainsi à nos grappes, il faut quand même choisir une phrase de passe pour déverrouiller votre clé privée. L'application ssh-agent peut garder votre clé privée en mémoire sur votre ordinateur local et l'utiliser quand un programme en a besoin pour authentification. Vous n'aurez donc qu'à déverrouiller la clé privée qu'une seule fois et vous pourrez vous connecter à distance sans avoir à entrer à nouveau la phrase de passe.

    Lancez ssh-agent avec la commande

    Question.png
    [name@server ~]$ eval `ssh-agent`

    ssh-agent fonctionne en arrière-plan pendant que vous êtes connecté à votre ordinateur local. Ajoutez votre paire de clés aux paires gérées par l'agent avec la commande

    Question.png
    [name@server ~]$ ssh-add

    Si votre paire de clés est enregistrée à l'endroit habituel, la commande ssh-add devrait pouvoir la trouver, mais au besoin vous pouvez ajouter le chemin complet vers la clé privée en argument à ssh-add. L'option ssh-add -l montrera les clés privées qui sont présentement accessibles par ssh-agent.

    L'utilisation de ssh-agent permet de négocier automatiquement l'échange de clé entre votre ordinateur et la grappe, mais si vous devez utiliser la clé sur la grappe, par exemple pour communiquer avec un dépôt GitHub à distance, vous devez permettre la redirection par agent. Pour faire ceci sur la grappe Béluga, ajoutez les lignes suivantes au fichier $HOME/.ssh/config sur votre ordinateur :

    File : config

    Host beluga.computecanada.ca
        ForwardAgent yes


    N'utilisez jamais la ligne Host * dans votre fichier de configuration SSH pour rediriger par agent.

    MacOS et plusieurs distributions récentes de Linux offrent des keychain managers graphiques faciles à configurer pour gérer votre paire de clés. En vous connectant à votre ordinateur local, la clé privée est enregistrée en mémoire et le système d'exploitation peut automatiquement fournir cette clé au client SSH quand vous vous connectez à distance sur une grappe. Vous n'aurez plus besoin d'entrer une phrase de passe pour vous connecter par la suite.