場景:使用github的時候,大家都知道需要給該賬號添加一個SSH key才能訪問,參考具體設置。當然如果你在多台機器使用一個賬戶,你可以為該賬戶添加多個SSH key。由於github是使用SSH key的fingerprint來判定你是哪個賬戶,而不是通過用戶名,這樣你就可以在設置完之后,在本地直接執行下面的語句,它就會自動使用你的.ssh/id_rsa.pub所對應的賬戶進行登陸,然后執行相關命令。
1 #本地建庫 2 $ git init 3 $ git commit -am "first commit' 4 5 #push到github上去 6 $ git remote add origin git@github.com:xxxx/test.git 7 $ git push origin master
但是如果你想在一台機器使用兩個github賬號(比如私人賬號和工作用賬號)。這個時候怎么指定push到哪個賬號的test倉庫上去呢?
解決方案(假設你已經擁有私有賬號且已經OK,現在想使用另一個工作用賬號):
1:為工作賬號生成SSH Key
$ ssh-keygen -t rsa -C "your-email-address" #存儲key的時候,不要覆蓋現有的id_rsa,使用一個新的名字,比如id_rsa_work
2:把id_rsa_work.pub加到你的work賬號上
3:把該key加到ssh agent上。由於不是使用默認的.ssh/id_rsa,所以你需要顯示告訴ssh agent你的新key的位置
$ ssh-add ~/.ssh/id_rsa_work # 可以通過ssh-add -l來確認結果
4:配置.ssh/config
$ vi .ssh/config # 加上以下內容 #default github Host github.com HostName github.com IdentityFile ~/.ssh/id_rsa Host github_work HostName github.com IdentityFile ~/.ssh/id_rsa_work
5:這樣的話,你就可以通過使用github.com別名github_work來明確說你要是使用id_rsa_work的SSH key來連接github,即使用工作賬號進行操作。
#本地建庫 $ git init $ git commit -am "first commit' #push到github上去 $ git remote add origin git@github_work:xxxx/test.git $ git push origin master
ps: 如果執行ssh-add的時候,出現這樣的錯誤,說明ssh-agent沒有啟動起來
Could not open a connection to your authentication agent.
這個時候需要手動啟動ssh-agent:
exec ssh-agent /bin/bash
也可以直接在.bash_profile里面自動啟動,這樣就不用每次都手動啟動
SSH_ENV="$HOME/.ssh/environment" function start_agent { echo "Initialising new SSH agent..." /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}" echo succeeded chmod 600 "${SSH_ENV}" . "${SSH_ENV}" > /dev/null /usr/bin/ssh-add; } # Source SSH settings, if applicable if [ -f "${SSH_ENV}" ]; then . "${SSH_ENV}" > /dev/null #ps ${SSH_AGENT_PID} doesn't work under cywgin ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || { start_agent; } else start_agent; fi
