web-dev-qa-db-fra.com

Ssh config - même hôte mais différentes clés et noms d'utilisateur

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.

33
usr

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.

47
user1686