
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.git
git@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/config
es 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/