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

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

ich habe mehrere SSH-Schlüssel und habe auch ein Konto bei Bitbucket und GitHub. Aber wann immer ich Pull verwende, erhalte ich einen Fehler

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

oder wenn ich per SSH auf die Bitbucket-Website zugreife, kommt es zu Fehlern, da der öffentliche Schlüssel verweigert wurde

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

Wie kann ich dieses Problem lösen und für verschiedene Konten unterschiedliche Schlüssel verwenden?

Antwort1

Dies ist alles von der Website und von Stackoverflow gesammelt, ich hoffe, das hilft denen, die neu bei SSH sind

so können Sie 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-Agenten 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 zum SSH-Agenten hinzugefügt

wir haben einen für Bitbucket und einen für GitHub

also erstellen wir eine Konfigurationsdatei wie diese

~/.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 zwei verschiedene Schlüssel für zwei verschiedene Konten bei Bitbucket und einen für GitHub.

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

ändern[email protected]/yyyproject.gitgit@bit-yyyuser:yyyuser/yyyproject.git

also im Projektordner und fügen Sie 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 Push und Pull problemlos 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 weiteres 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 Rechner, also müssen wir das Projekt klonen, aber wir müssen eine kleine Änderung an der URL vornehmen, um es zu klonen

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

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 unterschiedliche SSH-Schlüssel für unterschiedliche Hosts identifiziert, einen für Git und einen für Bitbucket. Jetzt weiß das System, welche SSH-Schlüssel mit welchem ​​Host verwendet werden müssen.

Jetzt können wir problemlos ziehen und schieben.

Antwort2

Ich konfiguriere ~/.ssh/configes wie folgt:

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

Verwenden Sie dann in der Git-URL anstelle der echten Domäne einen benutzerdefinierten Hostnamen:

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

Weitere Einzelheiten finden Sie hier:http://itblog.study.land/So geben Sie unterschiedliche SSH-Schlüssel für Git-Push für eine bestimmte Domain an/

verwandte Informationen