2012-11-25 12 views
5

Ich versuche seit mehr als 3 Stunden, mehrere Konto für Github und Literely müde. Ich habe fast alle möglichen Wege ausprobiert hier zu beschreiben, github und Artikel und keiner von ihnen hat funktioniert. Ich bin komplett Neuling zu Github und Unix auch. Also brauche deine Hilfe, um das zu beheben. Hier unten, was ich macheGitHub: Mehrere Konto-Setup

Ich benutze Windows 7 und habe zwei SSH-Schlüssel für zwei verschiedene Konten.

  1. id_rsa
  2. id_rsa_ac2

als Konfigurationsdatei erstellt in .ssh Verzeichnis des Benutzers und hinzugefügt Code unten

#Account one 
Host github.com 
    HostName github.com 
    PreferredAuthentications publickey 
    IdentityFile /c/Projects/.ssh/id_rsa 

#Account two 
Host ac2.github.com 
    HostName github.com 
    PreferredAuthentications publickey 
    IdentityFile /c/Projects/.ssh/id_rsa_ac2 

Jetzt versuche ich, durch die Verwendung unter Code remote hinzufügen

git remote add origin [email protected]:myaccount/my.git 

und schiebt mit Balg Code

git push origin master 

Aber wenn ich es zu schieben versuchen gibt mir Fehler: Error: Permission to myaccount/my.git denied to {account}. // where it is considering default user account and not for ac2 user account fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists.

Vielen Dank ..

Zusätzliche Informationen:

Ich habe die id_rsa_ac2 testen und erfolgreich authentifizierte Nachricht geben. Aber das Merkwürdige ist, gibt Benutzername mit Original-Konto nicht mit dem ac2 Konto Benutzername

Hi {username!} You've successfully authenticated, but GitHub does not provide shell access. //here user id should be from ac2 but it is showing userid from id_rsa and not from id_rsa_ac2

INFORMATIONEN: finaler Code

@ VonC Antwort gearbeitet und das Hinzufügen endgültigen Code als meine Antwort, wenn jemand verwendet werden soll.

Antwort

1

Für Ihre Konfiguration in Betracht gezogen werden, müssen Sie die Host Namen in der Remote-Adresse verwenden:

git remote add origin ac2.github.com:myaccount/my 

Wenn Sie eine HOME Umgebungsvariable definiert haben (die nicht standardmäßig auf Windows definiert ist , aber ist definiert, wenn Sie die msysgit git-cmd.bat) in ein Verzeichnis verwenden, unter dem Sie Ihr .ssh-Verzeichnis mit seinem privaten Schlüssel id_rsa_ac2 und öffentlichen Schlüssel id_rsa_ac2.pub haben, dann wird es funktionieren.

+0

Andere Ratschläge: http://Stackoverflow.com/a/13356544/6309 – VonC

+0

Große Hilfe! es ist fertig und funktioniert beide account. Nur für das Wissen muss ich Ihre beiden Antworten verwenden, wo Sie beschrieben haben, "User Git" zu definieren, als es funktionierte. Vielen Dank –

+0

@VonC Ich verließ eine andere Antwort mit einem Skript, um alles zu automatisieren. (Obwohl der Prozess ein bisschen anders ist, funktioniert es für GitLab, und ich würde auch GitHub übernehmen.) Lass mich wissen, wenn du denkst, ich sollte etwas hinzufügen – Procyclinsur

2

Also laut @ VonC's Antwort hier was ich gemacht habe.

  1. habe ich SSH-Schlüssel für ein anderes Konto und hinzugefügt mit id_rsa_ac2 (wo AC2 für die zweite Konto ist)
  2. als nur Kreuz erzeugen geprüft entweder es funktioniert mit ssh -T ac2.github.com
  3. Erstellt Config Datei (ohne Erweiterung in) /c/Users/yourname/.ssh/ Verzeichnis

Hier ist der Code, was ich für Konfigurationsdatei verwendet

#Account one 
Host github.com 
    HostName github.com 
    PreferredAuthentications publickey 
    IdentityFile /c/Users/yourname/.ssh/id_rsa 
    User git 

#Account two 
Host ac2.github.com 
    HostName github.com 
    PreferredAuthentications publickey 
    IdentityFile /c/Users/yourname/.ssh/id_rsa_ac2 
    User git 

So jetzt sobald Sie dies getan haben, können Sie beginnen, beide Konten zu verwenden, wie Sie benötigen.

für Hauptkonto hinzugefügt Remote als Ursprung mit git remote add origin [email protected]/youraccount/rep.git Als Push verwenden git push origin master dies wird auf Ihr erstes Konto hochladen.

hinzuzufügen Fernbedienung für die zweite (AC2) verwendete Konto git remote add ac2 ac2.github/yoursecondaccount/rep.git als die Verwendung git push ac2 master dies schieben wird auf die zweite (AC2) Konto hochladen.

Um zu überprüfen, ob es Fern Verwendung git remote -v und einhüllen, wenn Sie jemand entfernen möchten als git remote rm origin verwenden, wo Herkunft ist Ihre zusätzliche Remote hinzugefügt.

Ich hoffe, diese Informationen helfen anderen, die das gleiche Problem haben.

Nochmals vielen Dank an @VonC

+1

Tolles Feedback! +1 – VonC

+0

Es ist alles wegen dir! Nochmals vielen Dank für Ihre großartige Hilfe und Wertschätzung :) –

+0

@CodeLover Ich habe eine andere Antwort mit einem Skript, um alles zu automatisieren. (Obwohl der Prozess ein bisschen anders ist, funktioniert es für GitLab, und ich würde auch GitHub annehmen.) Lass es mich wissen, wenn du denkst, ich sollte etwas hinzufügen. – Procyclinsur

1

Hier ist ein Skript, um die Addition von zwei Gitlab Accounts zu Ihrem Setup zu automatisieren.

https://gitlab.com/procyclinsur/Fedora-Environment

#!/bin/bash 

# VERIFIED FOR FEDORA 27 MATE (Likely to work in others distros) 
# Multi Account SSH for GitLab/OpenSSH Setup. 
ROOT=root 
if ((whoami == $ROOT)) 
    then 
    echo "Run as standard user" 
elif [[ -z $1 || -z $2 ]] 
    then 
    echo "command usage: setup-gitlab.bash work[email protected] [email protected]" 
elif [[ ! $1 =~ .*@.*\..* ]] 
    echo "Work email is not in the correct format. Must match regex .*@.*\..*" 
elif [[ ! $2 =~ .*@.*\..* ]] 
    echo "Home email is not in the correct format. Must match regex .*@.*\..*" 
else 
    HOMEEMAIL=$1 
    WORKEMAIL=$2 
    USRNAME=`whomai` 

# /home/<username>/.ssh/ 
# ├── config 
# ├── home-gitlab-key 
# ├── home-gitlab-key.pub 
# ├── known_hosts 
# ├── work-gitlab-key 
# └── work-gitlab-key.pub 

#Executed to match the above directory. 
    ssh-keygen -t rsa -C "$WORKEMAIL" -b 4096 -f work-gitlab -N "" 
    ssh-keygen -t rsa -C "$HOMEEMAIL" -b 4096 -f home-gitlab -N "" 

# Agent Configuration Setup (.ssh/config) 
    cat >> ~/.ssh/config <<EOF 
Host gitlab-work 
    HostName gitlab.com 
    User git 
    IdentityFile /home/$USRNAME/.ssh/work-gitlab-key 

Host gitlab-home 
    HostName gitlab.com 
    User git 
    IdentityFile /home/$USRNAME/.ssh/home-gitlab-key 
EOF 

# Agent Setup (potentially optional???) 
    cat >> ~/.bashrc <<'EOF' 
eval "$(ssh-agent -s)" 
for i in `ls ~/.ssh/*.pub` ; do ssh-add ${i::-4} ; done 
EOF 

    . .bashrc 

fi 

Nach dem Ausführen des Skripts müssen Sie die Inhalte der beiden öffentlichen Schlüssel zu jedem Konto jeweils Gitlab erstellt kopieren.

Eine andere Anmerkung, wenn Sie git clone [email protected]:<account>/<project>.git verwenden, sollten Sie gitlab.com wie folgt ersetzen.

git clone [email protected]:<account>/<project>.git 

und

git clone [email protected]:<account>/<project>.git 

sind.

Verwandte Themen