Comment utiliser plusieurs clés SSH avec différents comptes et hôtes

21

j'ai plusieurs clés ssh et j'ai également un compte sur bitbucket et github. comment quand j'utilise tirer ça me donne une erreur

:/var/www/proj$ git pull origin master
conq: repository access denied.
fatal: The remote end hung up unexpectedly

ou si je ssh le site bitbucket il donne des erreurs cul clé publique refusée

:~$ ssh [email protected]
Permission denied (publickey).

comment puis-je résoudre ce problème et utiliser différentes clés avec différents comptes.

Iori
la source
stackoverflow.com/questions/7927750/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Réponses:

21

Tout cela est collecté à partir du site Web et du stackoverflow, espérons que cela aide les nouveaux utilisateurs de ssh

vous pouvez donc avoir plusieurs clés ssh

~/.ssh$ ls
yyy_id_rsa  yyy_id_rsa.pub  id_rsa  id_rsa.pub  known_hosts

Remarque: nous devons ajouter ensuite à l'agent ssh, probablement id_rsa sera ajouté, nous devons donc ajouter l'autre clé privée

~/.ssh$ ssh-add yyy_id_rsa

maintenant, nous avons ajouté les deux clés ssh à ssh-agent

nous en avons un pour bitbucket et un pour github

nous créons donc un fichier de configuration comme celui-ci

~/.ssh$ nano config
Host bit-yyyuser bitbucket.org
Hostname bitbucket.org
IdentityFile ~/.ssh/yyy_id_rsa
User yyyuser

Host bit-xxxuser bitbucket.org
Hostname bitbucket.org
IdentityFile ~/.ssh/id_rsa
User xxxuser

Host git-xxxuser github.com
Hostname github.com
IdentityFile ~/.ssh/id_rsa
User xxxuser

Remarque: j'utilise 2 clés différentes pour 2 comptes différents sur bitbucket et une pour github.

Maintenant, nous devons dire au référentiel git quel hôte utiliser afin que j'obtienne cette clé ssh spécifique pour ce compte spécifique

changer [email protected]/yyyproject.gitpourgit@bit-yyyuser:yyyuser/yyyproject.git

donc dans le dossier du projet et ajoutez l'url distante

/var/www/yyyproject$ git remote add bit git@bit-yyyuser:yyyuser/yyyproject.git

dans un autre projet

/var/www/xxxproject$ git remote add bitt git@bit-xxxuser:xxxuser/xxxproject.git

vous pouvez maintenant utiliser push and pull facilement

:/var/www/yyyproject$ git pull bit master
From bit-yyyuser:yyyuser/yyyproject
 * branch            master     -> FETCH_HEAD
Already up-to-date.
:/var/www/yyyproject$

et un autre projet

/var/www/xxxproject$ git push bitt ver1
To git@bit-xxxuser:xxxuser/xxxproject.git
 * branch            master     -> FETCH_HEAD
Already up-to-date.
:/var/www/xxxproject$ 

maintenant je n'ai pas le projet github sur la machine locale donc nous devons cloner le projet mais nous devons faire un petit changement à l'url pour cloner

notre URL est comme ça

[email protected]:xxxuser/python.git

comme nous devons le cloner avec des clés spécifiques, nous avons juste besoin de changer le nom d'hôte avec l'hôte que nous avons défini

git@git-xxxuser:xxxuser/python.git

comme défini dans le fichier de configuration

et maintenant on peut cloner

:/var/www/us$ git clone git@git-xxxuser:xxxuser/python.git
Cloning into 'python'...
remote: Counting objects: 75, done.
remote: Compressing objects: 100% (42/42), done.
remote: Total 75 (delta 18), reused 62 (delta 8)
Receiving objects: 100% (75/75), 6.29 KiB, done.
Resolving deltas: 100% (18/18), done.
:/var/www/us$ 

nous avons identifié différentes clés ssh pour différents hôtes, une pour git et une pour bitbucket maintenant le système sait quelles clés ssh doivent être utilisées avec quel hôte.

Maintenant, nous pouvons facilement tirer, pousser.

Iori
la source
Que faire si mon URL git utilise https? Quoi qu'il en soit pour y travailler?
Gelin Luo