2012-11-25 16 views
5

私はgithubとlitteralyのために複数のアカウントを設定するのに3時間以上を費やしています。私は、ここで説明するほとんどすべての可能な方法を試してきました。私はgithubとUnixにも全く初心者です。これを修正するにはあなたの助けが必要です。ここで私がやっていることの下にGitHub:複数のアカウント設定

私はWindows 7を使い、2つの異なるアカウント用に2つのsshキーを設定しています。今、私はコード

の下に使用して、リモート追加しようとしているユーザーの .sshディレクトリに作成した設定ファイルよりも

  1. id_rsaと
  2. id_rsa_ac2

とコード

#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 

の下に追加

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

と怒鳴るコードで

git push origin master 

を押すしかし、私はそれは私にエラーを与えているプッシュしようとしています: 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.

どうもありがとう..

その他の情報:

私はid_rsa_ac2をテストし、正常に認証されたメッセージを与えました。 VonCの答えが働い

@最終的なコードと、誰もが利用したい場合は、私の答えとして、最終的なコードを追加:しかし、奇妙なことがac2アカウントのユーザー名とない

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

情報を元のアカウントを持つユーザー名を与えています。

答えて

1

考慮に入れなければ、あなたの設定のために、あなたはあなたのリモートアドレスにそのHost名を使用する必要があります:あなたがWindows上でデフォルトで定義されていないHOME環境変数(定義されている場合は

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

あなたがあなたの.sshディレクトリを持っているディレクトリにid_rsa_ac2秘密鍵とid_rsa_ac2.pub公開鍵を持つディレクトリにmsysgit git-cmd.batを使用している場合に定義されます。

+0

他のアドバイス:http://stackoverflow.com/a/13356544/6309 – VonC

+0

大きな助け!それは完了し、両方のアカウントで働いています。ナレッジのために、私はあなたが 'User git'を定義するために記述したところで両方の答えを使用しなければなりません。ありがとうございました –

+0

@VonC私はすべてを自動化するスクリプトで別の答えを残しました。 (プロセスは少し違っていますが、GitLabでも動作しますが、私はGitHubも想定しています。)何かを追加するべきだと私に知らせてください。 – Procyclinsur

2

@ VonCの答えによれば、私は何をしましたか。

  1. は、私はちょうどクロスがチェック以外の別のアカウントのSSH鍵を生成しており、(AC2が第二のアカウントのためである) id_rsa_ac2
  2. で追加のいずれか、それは拡張子なし(ssh -T ac2.github.com
  3. 作成さ設定ファイルで動作します) /c/Users/yourname/.ssh/ディレクトリ

にここで私は、configファイル

に使用どのようなコードです

これで一度これを行うと、必要に応じて両方のアカウントを使い始めることができます。

私はリモコンを起点に追加しましたgit remote add origin [email protected]/youraccount/rep.git プッシュ使用よりgit push origin masterこれはあなたの最初のアカウントにアップロードされます。

使用する2番目の(ac2)アカウントのリモートを追加するgit remote add ac2 ac2.github/yoursecondaccount/rep.git プッシュ使用よりgit push ac2 masterこれは2番目の(ac2)アカウントにアップロードされます。

git remote -vがリモートで追加されているかどうかを確認し、除外する場合はgit remote rm originを追加します。originは追加されたリモートです。

この情報が同じ問題を抱えている他の人に役立つことを願っています。

おかげで再び@VonC

+1

偉大なフィードバック! +1 – VonC

+0

あなたのためにすべてです!あなたの大きな助けと感謝のおかげで再びありがとう:) –

+0

@CodeLover私はすべてを自動化するスクリプトで別の答えを残しました。 (プロセスは少し違っていますが、GitLabでも動作しますが、GitHubも想定しています。)何か追加する必要があると思ったら教えてください。 – Procyclinsur

1

にここであなたのセットアップには、2つのGitLabアカウントの追加を自動化するスクリプトです。

#!/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 [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 

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

スクリプトを実行した後、あなたはそれぞれGitLabアカウントに作成された2つの公開鍵の内容をコピーする必要があります。

git clone [email protected]:<account>/<project>.gitを使用する場合は、gitlab.comを次のように置き換えてください。

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

それぞれ

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

関連する問題