web-dev-qa-db-fra.com

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

j'ai plusieurs clés SSH et j'ai également un compte sur bitbucket et github. comment, quand j'utilise, tire, ç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 web bitbucket il donne des erreurs ass 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.

21
Iori

Tout cela est rassemblé sur le site web et stackoverflow, espérons que cela aidera ceux qui sont nouveaux dans ssh

vous pouvez donc avoir beaucoup de clés SSH

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

Note: nous devons ajouter ensuite à ssh-agent, probablement id_rsa sera ajouté donc nous devons 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

donc nous créons 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

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

Nous devons maintenant indiquer au référentiel git quel hôte utiliser afin que je puisse obtenir cette clé ssh spécifique pour ce compte spécifique.

remplacez [email protected]/yyyproject.git par git@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

maintenant, vous pouvez 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 le cloner mais nous devons faire un petit changement à l'URL à 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 de l'hôte avec l'hôte que nous avons défini

git@git-xxxuser:xxxuser/python.git

tel que défini dans le fichier de configuration

et maintenant nous pouvons 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. Le système sait désormais quelles clés ssh utiliser avec quel hôte.

Maintenant, nous pouvons facilement tirer, Push.

21
Iori

Je configure ~/.ssh/config, comme ceci:

Host gitlab-as-thuc  
    HostName git.thuc.com
    User git
    IdentityFile ~/.ssh/id_rsa.thuc
    IdentitiesOnly yes

utilisez ensuite le nom d’hôte personnalisé au lieu du domaine réel dans l’URL git:

git remote add thuc git@gitlab-as-thuc:your-repo.git  

Pour plus de détails, veuillez lire ici: http://itblog.study.land/how-to-specify-different-ssh-keys-for-git-Push-for-a-given-domain/

1
thucnguyen