需求
公司有g(shù)ithub賬號,自己有g(shù)ithub賬號
說明
SSH key 可以讓你在你的電腦和 Git 服務(wù)器之間建立安全的加密連接。一般ssh key存儲在 這個目錄下/Users/macAcountName/.ssh (macAcountName電腦賬戶名字不用管一般用item后默認目錄就是這個,直接輸入.ssh進入即可)
如果不是默認目錄cd一下到上述目錄即可
ll //查看目錄文件
ps. 這是之前添加的git賬戶兄春,默認走id_rsa
添加新賬戶
跟添加一個賬戶步驟差不多
生成SSHkey
ssh-keygen -t rsa -C "xxx@xx.com"
點擊回車后,會出現(xiàn)以下提示
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/macAcountName/.ssh/id_rsa):
如果首次配置一個賬號,直接回車倘要,自動取默認路徑和名稱。
如果是多個git賬號配置私鑰/公鑰十拣,需要自己指定路徑和名稱封拧,以id_rsa_dq為例,名稱可自己定義(直接在冒號后輸入id_rsa_dq即可)
繼續(xù)回車
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
這里取默認值空,最后出現(xiàn)如下圖的回顯,就說明你配置成功了
Your identification has been saved in /Users/macAcountName/.ssh/id_rsa_dq.
Your public key has been saved in /Users/macAcountName/.ssh/id_rsa_dq.pub.
The key fingerprint is:
SHA256:lEmncZqtuXuHgZ4XtkVMkazLaTC5XgN0VLjYi3T8Fk8 xxx@xxx.com
The key s randomart image is:
+---[RSA 2048]----+
| o o..=+o |
| . @. + o X|
| B..B o |
| . oB B . E|
| So X = + |
| ..* X o .|
| ..+ O o |
| o.* . |
| .o . |
+----[SHA256]-----+
然后再看目錄
然后
vim id_rsa_dq.pub
把里面的內(nèi)容拷貝到剪切板, 或者用命令拷貝(pbcopy < ~/.ssh/id_rsa_dq.pub)夭问,粘貼到key中即可
測試是否鏈接成功
ssh -T git@github.com //(github.com即你的域名泽西,公司的賬號或許就是git.XXX.com)
一般會失敗,哈哈缰趋,提示:
Permission denied (publickey).
當(dāng)然成功是:
Welcome to Git@XXX, yourname!
成功就不說了捧杉,失敗了需要執(zhí)行
ssh-add ~/.ssh/id_rsa_dq
// 添加成功提示
Identity added: /Users/macAcountName/.ssh/id_rsa_dq (/Users/macAcountName/.ssh/id_rsa_dq)
// 再執(zhí)行 ssh -T git@github.com 應(yīng)該就是成功了
至此,還沒有完秘血。味抖。。如果你在github等上面有兩個賬號灰粮,可能就會導(dǎo)致git提交失敗仔涩,那么這里就需要配置~/.ssh/config這個文件( 沒有config文件的自己建 )
touch config // 建config
#thub user(first@email.com)
Host github1
HostName git.some.com
User git
IdentityFile ~/.ssh/id_rsa
#dq
Host dq (名稱自定義)
HostName github.com (服務(wù)器地址)
User git
IdentityFile ~/.ssh/id_rsa_dq (密鑰存儲路徑)
規(guī)則:從上至下讀取config的內(nèi)容,在每個Host下尋找對應(yīng)的私鑰粘舟。這里將GitHub SSH倉庫地址中的git@github.com替換成新建的Host別名如:dq红柱,那么原地址是:git@github.com:username/Mywork.git,替換后應(yīng)該是:dq:username/Mywork.git
使用
以前一個賬戶的時候:
$ git clone git@github.com: 用戶名/XXX.git
現(xiàn)在:
$ git clone git@github1: 用戶名1/XXX.git // 其實就是在github上clone代碼的地址把@符號后面 冒號:前面的(github.com) 替換成之前在config里面定義的HOST別名蓖乘,如上锤悄,第一個是github1
第二個賬戶就是:
$ git clone git@dq: 用戶名2/XXX.git
最后,在clone完的項目倉庫目錄里最好定義一下局部賬戶名跟郵箱嘉抒,這樣提交的時候顯示的賬戶名郵箱就是各自對應(yīng)的~ 不然就顯示全局定義的~ 想看提交的賬戶git log 就能看
$ git config user.name "one_name" ; git config user.email "one_email"
$ git config user.name "two_name" ; git config user.email "two_email"
QA (這部分我沒有遇到零聚,出處:http://www.reibang.com/p/fbbf6efb50ba 這篇也寫的不錯,大家可以參考)
Q: 按照上述步驟執(zhí)行了些侍,仍然Permission denied (publickey)
試如下方案:
清空~/.ssh/known_hosts文件
執(zhí)行ssh-add -D(刪除所有), 再次執(zhí)行ssh-add -A(添加所有)
Q: 此次配置成功后隶症,待下次重新啟動電腦后,git提交又提示
Permission denied (publickey)
每次重新執(zhí)行ssh-add -A
每次重新執(zhí)行嫌麻煩 ,ssh-add -A -K,添加到鑰匙串內(nèi)岗宣,這樣下次如果沒有知道密鑰蚂会,那么則會自動取鑰匙中存取的密鑰
Q: 報錯如下:
remote: Permission to username1/xxxx.git denied to username2.
fatal: unable to access 'https://github.com/username1/xxxx.git/': The requested URL returned error: 403
原因可能是你有兩個github賬戶, 以前使用一個登陸并管理代碼耗式,切換另一個賬號管理代碼時胁住, 鑰匙串存儲仍然是第一個用戶的密碼
執(zhí)行g(shù)it credential-osxkeychain erase