50 votes

Utilisation de la même clé privée SSH sur plusieurs machines

J'ai un dépôt Github auquel je veux accéder depuis deux machines Linux différentes.

Pour la première machine, j'ai suivi les instructions de Github pour générer des clés SSH, et j'ai ajouté la clé publique résultante à Github. Ce client fonctionne bien.

Pour le deuxième client, j'ai copié le fichier /home/{user}/.ssh/id_rsa du premier client. Je pensais que cela pourrait être tout ce que j'avais à faire, mais lorsque j'essaie de me connecter, j'obtiens 'Permission denied (publickey)’.

Qu'est-ce que j'ai oublié?

55voto

WildJoe Points 2515

La même clé SSH devrait pouvoir être utilisée depuis plusieurs clients. J'ai différentes clés SSH pour différents réseaux et elles sont en fait stockées sur une clé USB chiffrée que j'utilise depuis plusieurs ordinateurs différents sans problème.

SSH est très pointilleux concernant les permissions de fichier, donc je vérifierais d'abord toutes les permissions de /home/{utilisateur} jusqu'au fichier id_rsa lui-même.

SSH n'a pas vraiment besoin des permissions d'écriture du groupe ou du monde, donc assurez-vous de faire un chmod go-w sur votre répertoire utilisateur et le répertoire ~/.ssh pour commencer. Je vérifierais également qu'ils appartiennent à votre utilisateur avec chown ${UTILISATEUR}:${UTILISATEUR}.

Quant à la clé SSH elle-même, je leur donne un chmod 600...

Si vous le souhaitez, j'ai des informations supplémentaires sur la manière dont je gère mes clés SSH dans ma réponse à une autre question sur SSH.

11voto

vmfarms Points 3047

Si vous recevez une autorisation refusée de la part de Github, il se peut que celui-ci ne prenne pas en compte votre fichier de clé SSH copié, mais plutôt le système par défaut. Une solution simple consiste à créer un fichier ~/.ssh/config et à y mettre ce qui suit :

Host github.com
  Hostname      github.com
  User          git
  IdentityFile  ~/.ssh/yourkeyfile

Cela forcera votre client SSH à utiliser cette clé uniquement pour github.com.

J'espère que cela vous aidera.

4voto

NotMe Points 406

Je sais que c'est ancien, mais je voulais souligner que vous devez également copier la clé publique sur le deuxième client

(ou la recomputer avec ssh-keygen -y -f ~/.ssh/id_rsa_.. > ~/.ssh/id_rsa...pub)

De 1:

  1. Méthode d'authentification par clé publique : "publickey"

Le seul "nom de méthode" d'authentification OBLIGATOIRE est "publickey"
authentication. Toutes les implémentations DOIVENT prendre en charge cette méthode;
toutefois, tous les utilisateurs n'ont pas besoin de clés publiques, et la plupart des politiques locales ne sont probablement pas susceptibles d'exiger l'authentification par clé publique pour tous les utilisateurs dans un proche avenir.

Avec cette méthode, la possession d'une clé privée sert d'authentification. Cette méthode fonctionne en envoyant une signature créée
avec la clé privée de l'utilisateur. Le serveur DOIT vérifier que la clé
est un authentificateur valide pour l'utilisateur, et DOIT vérifier que la
signature est valide. Si c'est le cas, la demande d'authentification DOIT être
acceptée; sinon, elle DOIT être rejetée. Notez que le serveur PEUT
exiger des authentifications supplémentaires après une authentification réussie.

Votre client ssh commence l'authentification en envoyant la clé publique (la signature mentionnée en gras ci-dessus) au serveur. Le serveur, si la clé publique est une clé autorisée, envoie un ID de session aléatoire à votre client. Votre client encode ensuite cet ID de session avec la clé privée et l'envoie au serveur. Le serveur décode cet ID de session à l'aide de la clé publique, et s'il correspond à l'ID de session d'origine, authentifie votre client.

https://www.openssh.com/txt/rfc4252.txt

0voto

radius Points 9485

C'est probablement parce que vous n'avez pas copié les autorisations du fichier sur le deuxième client.
Mais une clé privée est privée, la bonne manière est de créer une nouvelle clé privée sur le deuxième client et ensuite ajouter sa clé publique à Github

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X