J'ai mis en place deux comptes Github, mais je ne peux pas obtenir les clés SSH pour fonctionner correctement. J'ai essayé divers configs.
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 USERNAME1:
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
au repo de nom d'utilisateur2:
ERROR: Permission to username2/repo.git denied to username1.
fatal: The remote end hung up unexpectedly
J'ai aussi essayé git Push
Avec les deux IdentityFile
et User
réglages sous le même Host
. La sortie est la même que possible avec la dernière configuration.
Je pense que git cherche automatiquement "github.com" car la télécommande est telle. Il est dit que l'hôte peut être tout ce que vous voulez ( https://stackoverflow.com/a/3828682 ). Y a-t-il un moyen de modifier quel hôte de SSH config doit utiliser un repo spécifique?
Ce serait idéal si je pouvais résoudre cela juste à partir de ~/.ssh/config.
Le client OpenSSH utilise uniquement la ligne Host
comme identifiant de section et tout le reste sont des paramètres. Si vous vous connectez à [email protected]
, SSH ne recherchera pas "User foo
"; il ne fera que rechercher" Host bar.com
".
En d'autres termes: si vous avez "Host github_username2
"Dans votre configuration SSH, vous devez utiliser le même hôte dans vos télécommandes GIT - github_username2
, ne pas [email protected]
.
Cependant, ce n'est pas ce qui provoque des échecs d'authentification, dans le cas de github.com
, le SSH nom d'utilisateur doit être "git
". Les serveurs GITUB SSH identifient uniquement les utilisateurs de leur clé SSH.
Une configuration SSH correcte serait:
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
Remarque: même si j'ai spécifié le nom d'utilisateur git
dans les deux endroits de mon exemple, il ne doit être spécifié qu'une fois - git@
Dans l'URL GIT prendra la priorité sur User git
dans ssh config.