解決方案(假設你已經擁有私有帳號且已經OK,如今想使用另外一個工做用帳號): git
1:爲工做帳號生成SSH Key shell
ssh-keygen -t rsa -C "your-email-address" #存儲key的時候,不要覆蓋現有的id_rsa,使用一個新的名字,好比id_rsa_work
2:把id_rsa_work.pub加到你的work帳號上 bash
3:把該key加到ssh agent上。因爲不是使用默認的.ssh/id_rsa,因此你須要顯示告訴ssh agent你的新key的位置 app
ssh-add ~/.ssh/id_rsa_work # 能夠經過ssh-add -l來確認結果4:配置.ssh/config
vi .ssh/config # 加上如下內容 #default git@osc Host git.oschina.net HostName git.oschina.net IdentityFile ~/.ssh/id_rsa Host osc_work HostName git.oschina.net IdentityFile ~/.ssh/id_rsa_work
5:這樣的話,你就能夠經過使用git.oschina.net別名osc_work來明確說你要是使用id_rsa_work的SSH key來鏈接git@osc ,即便用工做帳號進行操做。 ssh
#本地建庫 git init git commit -am "first commit' #push到git@osc上去 git remote add origin git@osc_work:xxxx/test.git git push origin master
ps: 若是執行ssh-add的時候,出現這樣的錯誤,說明ssh-agent沒有啓動起來 spa
ould not open a connection to your authentication agent.
這個時候須要手動啓動ssh-agent: .net
exec ssh-agent /bin/bash
也能夠直接在.bash_profile裏面自動啓動,這樣就不用每次都手動啓動 code
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