git - länge - title tag



Wie man mit mehreren SSH-Schlüsseln arbeitet (1)

Diese Frage hat hier bereits eine Antwort:

GitHub Benutzer,

Ich bin Neuling auf Github und habe ein Problem mit Git-Setup. Ich habe 2 account mit verschiedenen Benutzern auf github und ich habe git auf meinem System 2 mal eingerichtet

Erster /.ssh-Ordner (wie üblich) (enthält id_rsa, das im ersten Account kopiert wurde)
Zweiter Ordner /.ssh/new (enthält id_rsa, der im zweiten Account kopiert wurde)

jetzt zum Zeitpunkt des Push, wie kann ich zwischen SSH-Taste wechseln?

Denn wenn ich für einen zweiten Account pushen möchte, verwendet es den .ssh-Schlüssel anstelle von .ssh / new und gibt mir einen Fehler.

Bitte mach mich richtig wenn ich hier etwas falsch verstanden habe.

Vielen Dank.


(Ich habe dafür gestimmt, dies als ein mögliches Duplikat zu schließen, aber ich könnte genauso gut eine ähnliche Antwort hinzufügen.)

Wenn Sie den SSH-Transport verwenden, identifiziert GitHub Sie als Benutzer basierend auf dem SSH-Schlüssel, den Sie zur Authentifizierung verwenden. Sie müssen also sicherstellen, dass git einen SSH-Schlüssel für ein Repository und ein anderes für den anderen verwendet.

Ich gehe davon aus, dass:

  1. Sie haben ein GitHub-Konto mit dem Namen user1 , und Sie haben diesem öffentlichen Schlüssel den öffentlichen Schlüssel hinzugefügt, der Ihrem lokalen privaten Schlüssel /home/whoever/.ssh/id_rsa . user1 , das Repository, auf das Sie als user1 zugreifen user1 ist user1/whatever auf GitHub.
  2. Sie haben ein zweites GitHub-Konto mit dem Namen user2 und Sie haben diesem öffentlichen Schlüssel den öffentlichen Schlüssel hinzugefügt, der Ihrem lokalen privaten Schlüssel /home/whoever/.ssh/new/id_rsa . user2 , das Repository, auf das Sie als user2 zugreifen user2 ist user2/whatever auf GitHub.

Der einfachste Weg, um damit fertig zu werden, ist ein neues "remote" (dh ein Nickname für ein Remote-Repository) für jedes Repository zu erstellen, wobei der Hostname in jeder Remote-URL eigentlich ein Alias ​​ist, den Sie in ~/.ssh/config . (Wenn diese Konfigurationsdatei nicht existiert, müssen Sie sie erstellen.)

Zum Beispiel könnte ein Eintrag in der ~/.ssh/config Datei wie ~/.ssh/config aussehen:

Host github-as-user1
  HostName github.com
  User git
  IdentityFile /home/whoever/.ssh/id_rsa

Dann können Sie eine Fernbedienung mit dem Namen gh-user1 , sagen wir mit:

git remote add gh-user1 [email protected]:user1/whatever.git

... und wenn Sie Ihren master Zweig mit dem ~/.ssh/id_rsa Schlüssel auf das Repository user1/whatever auf GitHub ~/.ssh/id_rsa , können Sie einfach ~/.ssh/id_rsa tun:

git push gh-user1 master

Um als der andere Benutzer ( user2 ) in das zweite Repository zu schieben, müssen Sie einen zweiten Alias ​​zu Ihrer ~/.ssh/config Datei hinzufügen. Beispielsweise:

Host gh-as-user2
  HostName github.com
  User git
  IdentityFile /home/whoever/.ssh/new/id_rsa

Um dann als zweiter Benutzer zu diesem zweiten Repository zu gelangen, können Sie einfach Folgendes tun:

git push gh-user2 master




ssh-keys