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

23

J'ai un dépôt Github auquel je veux accéder à partir de 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 ajouté la clé publique résultante à Github. Ce client fonctionne bien.

Pour le deuxième client, j'ai copié le /home/{user}/.ssh/id_rsafichier du premier client. Je pensais que c'était peut-être tout ce que j'avais à faire, mais lorsque j'essaie de me connecter, je reçois «Autorisation refusée (publickey)».

Qu'est-ce que je rate?

Yarin
la source

Réponses:

32

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

SSH est très pointilleux sur les autorisations de fichiers, je voudrais donc d'abord vérifier toutes les autorisations de /home/{user}tout le long du id_rsafichier lui-même.

SSH ne se soucie pas vraiment des autorisations d'écriture de groupe ou du monde, alors assurez-vous que chmod go-wvotre répertoire personnel et le ~/.sshrépertoire de démarrage. Je m'assurerais également qu'ils appartiennent à votre utilisateur chown ${USER}:${USER}.

Pour la clé SSH elle-même, je chmod 600les ...

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

Jeremy Bouse
la source
3
C'était les autorisations - Je n'ai pas de représentant pour voter mais merci beaucoup
Yarin
6

Si vous obtenez une autorisation refusée de la part de Github, il se peut qu'il ne récupère pas votre fichier de clé SSH copié, mais plutôt la valeur par défaut du système. Un moyen simple de contourner ce problème consiste à créer un excellent ~/.ssh/configfichier et à y insérer les éléments suivants:

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 t'aides.

vmfarms
la source
2
Je n'ai pas de représentant pour voter mais merci
Yarin
1

Je sais que c'est vieux, mais j'ai pensé que vous devez également copier la clé publique sur le deuxième client

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

À partir de 1]:

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

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

    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 une 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 les deux sont valides, la demande d'authentification DOIT être
    acceptée; sinon, il DOIT être rejeté. 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 référencée en gras ci-dessus) au serveur. Le serveur, si la clé publique est une clé autorisée, renvoie un ID de session aléatoire à votre client. Votre client code ensuite cet ID de session avec la clé privée et le renvoie 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.

[1] [ http://www.openssh.org/txt/rfc4252.txt 3/10]

Église Jacob
la source
0

C'est probablement parce que vous n'avez pas copié l'autorisation du fichier sur le deuxième client.
Mais une clé privée est privée , la bonne façon est de créer une nouvelle clé privée sur le deuxième client, puis d'ajouter sa clé publique à Github

rayon
la source
Je comptais faire 1 paire de clés par utilisateur sur les multiples clients de chaque utilisateur. Mais une paire de clés pour chaque client de chaque utilisateur me semble tout simplement devenir incontrôlable ...?
Yarin
Si vous utilisez la même clé privée pour chaque utilisateur sur chaque machine, cela semble OK. Vérifiez simplement l'autorisation si vous copiez en utilisant scp avec le drapeau -p, cela devrait être correct
rayon