it-swarm.com.de

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

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 [email protected]
Permission denied (publickey).

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

21
Iori

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

ändere [email protected]/yyyproject.git in [email protected]:yyyuser/yyyproject.git

also in den projektordner und füge die remote url hinzu

/var/www/yyyproject$ git remote add bit [email protected]:yyyuser/yyyproject.git

in einem anderen Projekt

/var/www/xxxproject$ git remote add bitt [email protected]:xxxuser/xxxproject.git

jetzt können Sie Push and Pull verwenden

:/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 [email protected]: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

[email protected]: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

[email protected]:xxxuser/python.git

wie in der Konfigurationsdatei definiert

und jetzt können wir klonen

:/var/www/us$ git clone [email protected]: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, Push.

21
Iori

Ich konfiguriere ~/.ssh/config wie folgt:

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

verwenden Sie dann den benutzerdefinierten Hostnamen anstelle der echten Domain in der Git-URL:

git remote add thuc [email protected]:your-repo.git  

Weitere Informationen finden Sie hier: http://itblog.study.land/how-to-specify-different-ssh-keys-for-git-Push-for-a-given-domain/

1
thucnguyen