Github Gitcafe 多用戶配置
步驟一:用ssh-keygen命令生成一組新的id_rsa_new和id_rsa_new.pub。
$ ssh-keygen -t rsa -C "new@email.com"
平時我們都是直接回車,默認生成id_rsa和id_rsa.pub。這里特別需要注意,出現提示輸入文件名的時候要輸入與默認配置不一樣的文件名,比如: id_rsa_new。
步驟二:配置~/.ssh/config文件,以我自己的機器為例。
# Default Git
Host github.com
HostName IP Address #域名也可
User think
IdentityFile ~/.ssh/id_rsa
# 2nd. Git
Host username1.gitcafe.com # 同一個網站多賬號可以這樣配置
HostName IP Address #域名也可
User think
IdentityFile ~/.ssh/id_rsa_second
# 3rd. Git
Host username2.gitcafe.com
HostName IP Address #域名也可
User think
IdentityFile ~/.ssh/id_rsa_second
Host就是每個SSH連接的單獨代號,IdentityFile告訴SSH連接去讀取哪個私鑰。
步驟三:執行ssh-agent讓ssh識別新的私鑰。
$ ssh-add ~/.ssh/id_rsa_new
十分重要!!
該命令如果報錯:Could not open a connection to your authentication agent.無法連接到ssh agent,可執行ssh-agent bash命令后再執行ssh-add命令。
以后,在clone或者add remote的時候,需要把config文件中的host代替git@remoteaddress中的remoteaddress。
同時,你可以通過在特定的repo下執行下面的命令,生成區別于全局設置的user.name和user.email。
git config user.name "newname"
git config user.email "newemail"
#git config --global --unset user.name 取消全局設置
#git config --global --unset user.email 取消全局設置
例子:
在同一機器不同目錄下克隆遠程同一個repo
cd /home/user1
git clone git@defaultgit:xxx.git
cd /home/user2
git clone git@secondgit:xxx.git
上面的兩條clone命令,雖然關聯到同一個repo,卻是通過不同ssh連接,當然也是不同的git賬號。
同時你的github的repo ssh url就要做相應的修改了,比如根據上面的配置,原連接地址是:
git@github.com:username1/gopkg.git
那么根據上面的配置,就要把github.com換成username1.github.com, 那么ssh解析的時候就會自動把username1.github.com 轉換為 github.com,修改后就是
git@username1.github.com:username1/gopkg.git
如果你想測試一下連接,可用如下命令
$ ssh -T git@yourHost //我這是ssh -T git@username1.github.com
ssh再加"-v"參數時,可輸出更多的調試信息
對了還要記得修改git提交的地址
$ git remote rm origin
$ git remote add origin git@username1.github.com:username1/gopkg.git