49 votes

Configuration SSH - même hôte mais clés et noms d'utilisateur différents

J'ai créé deux comptes GitHub, mais je n'arrive pas à faire fonctionner correctement les clés ssh. J'ai essayé plusieurs configurations.


Host github_username1
    HostName github.com
    IdentityFile ~/.ssh/rsa_1
    User username1
Host github_username2
    HostName github.com
    IdentityFile ~/.ssh/rsa_2
    User username2

git push :

Permission denied (publickey).
fatal: The remote end hung up unexpectedly

Fonctionne pour nom d'utilisateur1 :

Host github.com
    HostName github.com
    IdentityFile ~/.ssh/rsa_1
    User username1
Host github.com
    HostName github.com
    IdentityFile ~/.ssh/rsa_2
    User username2

git push sur le dépôt de nom d'utilisateur2 :

ERROR: Permission to username2/repo.git denied to username1.
fatal: The remote end hung up unexpectedly

J'ai également essayé git push avec à la fois IdentityFile y User paramètres sous le même Host . Le résultat est le même qu'avec la dernière configuration.

Je pense que git recherche automatiquement le Host "github.com" parce que le remote est tel. Il est dit que Host peut être ce que vous voulez ( https://stackoverflow.com/a/3828682 ). Existe-t-il un moyen de changer l'hôte de la configuration ssh qui doit être utilisé par une répo spécifique ?

L'idéal serait de pouvoir résoudre ce problème à partir de ~/.ssh/config.

63voto

James Mertz Points 390

Le client OpenSSH n'utilise que l'option Host comme identifiant de la section, et tout le reste sont des paramètres. Si vous vous connectez à foo@bar.com SSH ne recherchera pas " User foo "Il ne recherchera que " Host bar.com ".

En d'autres termes : Si vous avez " Host github_username2 "dans votre configuration SSH, vous devez alors utiliser le même hôte dans vos Git remotes - github_username2 , pas git@github.com .

Cependant, ce n'est pas ce qui cause les échecs d'authentification. github.com , l'interface SSH le nom d'utilisateur doit être " git " . Les serveurs SSH de GitHub identifient les utilisateurs par leur clé SSH uniquement.


Une configuration SSH correcte serait la suivante :

Host github_username1
    Hostname github.com
    User git
    IdentityFile ~/.ssh/rsa_1
Host github_username2
    Hostname github.com
    User git
    IdentityFile ~/.ssh/rsa_2

Configuration Git :

[remote "origin"]
    url = git@github_username1:username2/repo.git

Configuration alternative de Git :

[remote "origin"]
    url = git@github.com:username2/repo.git

[url "git@github_username1:"]
    insteadOf = git@github.com:

Note : Même si j'ai spécifié le git aux deux endroits dans mon exemple, il ne doit être spécifié qu'une seule fois - git@ dans l'URL de Git aura la priorité sur User git dans la configuration SSH.

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