2015-05-19 13 views
5

Momentan verwende ich GitLab als meinen Remote-GIT-Server.
Ich habe kein Problem mit einzelnen Gitlab Konto mit SSH-Schlüssel zugewiesen.Wie konfiguriere ich zwei SSH-Schlüssel für zwei GitLab-Konten und push/pull mit TortoiseGit?

Aber jetzt habe ich einen anderen Gitlab-Account und ich versuche, den gleichen SSH-Schlüssel dafür zu verwenden, aber ich kann den Schlüssel zu diesem neuen Konto hinzufügen.
Der Fehler ist wie folgt, wenn ich versuchte, den Schlüssel hinzuzufügen:

Key bereits aufgenommen wurde
Fingerabdruck bereits

So getroffen worden, wie soll ich den gleichen Schlüssel verwenden, die für den Zugriff auf zweites Gitlab-Konto? Wenn es nicht möglich ist, wie verwende ich zwei Schlüssel gleichzeitig.

Übrigens benutze ich Windows-System.

Vielen Dank im Voraus!

============================================== ==================== Updates:

Unten ist meine Konfigurationsdatei. Und es ist wie folgt:

#my primary account 
Host {account1} 
    User git 
    HostName gitlab.com 
    PreferredAuthentications publickey 
    IdentityFile C:/Users/{username}/.ssh/id_rsa1 

#for NPR_HPTG account 
Host {account2} 
    User git 
    HostName gitlab.com 
    PreferredAuthentications publickey 
    IdentityFile C:/Users/{username}/.ssh/id_rsa2 

Und ich bin mit zwei Gitlab Konto,

[email protected]:{account_1}/repo1.git 
[email protected]:{account_2}/repo1.git 

Dennoch kann ich keinen Zugriff auf die account_2.

Bevor ich dieses zweite GitLab-Konto habe, lade ich einfach den ssh-Schlüssel auf account1 hoch, ohne dass This gesetzt werden muss. Aber jetzt, indem ich dem folgte, konnte ich am Ende noch zum [email protected]com:{account_2}/repo1.git drücken. Und ich verwende TortoiseGit um zu drücken/ziehen.

Antwort

16

einfach erklärt jeden privaten SSH-Schlüssel in einer %HOME%/.ssh/config Datei:

Host gitlabuser1 
    User git 
    Hostname {hostname} 
    PreferredAuthentications publickey 
    IdentityFile C:/Users/{username}/.ssh/id_rsa1 

Host gitlabuser2 
    User git 
    Hostname {hostname} 
    PreferredAuthentications publickey 
    IdentityFile C:/Users/{username}/.ssh/id_rsa2 

Das Ihren Satz von SSH-Schlüssel setzt sind:

%HOME%/.ssh/id_rsa1 ; %HOME%/.ssh/id_rsa1.pub 
%HOME%/.ssh/id_rsa2 ; %HOME%/.ssh/id_rsa2.pub 

Sie können dann die URLs für Klon/Push/Pull :

gitlabuser1:yourRepo1 
gitlabuser2:yourRepo2 

Stellen Sie sicher, Ihre CMD Sitzunghatdefiniert, normalerweise zu %USERPROFILE% (was für Sie mit git-cmd.bat getan wird)

Sie haben eine detailliertere Prozedur in this blog post.

+0

Ich bin geneigt zu glauben, dass nur Schreiben 'IdentityFile id_rsa2' sollte diese' id_rsa2' Datei aus '~/.ssh /' wählen und damit die richtige Sache automatisch machen. Ich würde versuchen, es zu sehen. – kostix

+0

@kostix Interessant. Normalerweise gebe ich immer den vollständigen Pfad an. – VonC

+0

Was sollte das richtige Format für hte 'gitlabuser1' sein? ist es etwa so: '[email protected]: my_username'? – 2342G456DI8

Verwandte Themen