So verwenden Sie mehrere SSH-Schlüssel mit unterschiedlichen Konten und Hosts


21

Ich habe mehrere SSH-Schlüssel und ich habe auch Konto auf Bitbucket und Github. Wie auch immer ich Pull benutze, es gibt mir Fehler

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

oder wenn ich die Bitbucket-Website ssh es gibt Fehler ass öffentlichen Schlüssel verweigert

:~$ ssh git@bitbucket.org
Permission denied (publickey).

Wie kann ich dieses Problem lösen und verschiedene Schlüssel mit verschiedenen Konten verwenden?


Antworten:


21

Dies wird alles von der Website und dem Stackoverflow zusammengetragen. Ich hoffe, dies hilft denjenigen, die neu bei ssh sind

Sie können also viele SSH-Schlüssel haben

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

Hinweis: Wir müssen dann zum ssh-agent hinzufügen, wahrscheinlich wird id_rsa hinzugefügt, also müssen wir den anderen privaten Schlüssel hinzufügen

~/.ssh$ ssh-add yyy_id_rsa

Jetzt haben wir beide ssh-Schlüssel zu ssh-agent hinzugefügt

Wir haben einen für Bitbucket und einen für Github

Also erstellen wir eine solche Konfigurationsdatei

~/.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

Hinweis: Ich verwende 2 verschiedene Schlüssel für 2 verschiedene Konten auf Bitbucket und einen für Github.

Jetzt müssen wir dem Git-Repository mitteilen, welcher Host verwendet werden soll, damit ich diesen speziellen SSH-Schlüssel für dieses spezielle Konto erhalte

wechseln git@bitbucket.orgyyyuser/yyyproject.gitzugit@bit-yyyuser:yyyuser/yyyproject.git

also im Projektordner und füge die Remote-URL hinzu

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

in einem anderen Projekt

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

Jetzt können Sie einfach drücken und ziehen

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

und ein anderes Projekt

/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$ 

Jetzt habe ich das Github-Projekt nicht auf dem lokalen Computer, daher müssen wir das Projekt klonen, aber wir müssen die URL zum Klonen ein wenig ändern

Unsere URL ist wie folgt

git@github.com:xxxuser/python.git

Da wir es mit bestimmten Schlüsseln klonen müssen, müssen wir nur den Hostnamen mit dem von uns definierten Host ändern

git@git-xxxuser:xxxuser/python.git

wie in der Konfigurationsdatei definiert

und jetzt können wir klonen

:/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$ 

Wir haben verschiedene SSH-Schlüssel für verschiedene Hosts identifiziert, einen für Git und einen für Bitbucket. Jetzt weiß das System, welche SSH-Schlüssel mit welchem ​​Host verwendet werden sollen.

Jetzt können wir leicht ziehen, schieben.


Was ist, wenn meine Git-URL https verwendet? Wie auch immer, daran zu arbeiten?
Gelin Luo

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.