問(wèn)題:
多個(gè)git賬號(hào),用SSH方式連接,配置SSH的時(shí)候,會(huì)存在覆蓋問(wèn)題。
解決:
1.生成rsa
(1)$ ls ~/.ssh?
查看本地是否有rsa,若有且沒(méi)用,可以刪除($ rm -rf ~/.ssh)
(2)$ ssh-keygen -t rsa -C your_git_mail -f ~/.ssh/id_rsa_github -b 4096
注:
[1]-C 后填寫(xiě)你git的郵箱 -f后填寫(xiě)rsa的路徑 -b后填寫(xiě)rsa的長(zhǎng)度(1024 2048 4096)
[2]多個(gè)git郵箱要生成多個(gè)rsa
[3]rsa會(huì)生成兩個(gè)文件:私鑰,公鑰(有后綴.pub)
2.添加私鑰
(1)$ ssh-add -l
查看ssh-agent中的私鑰,若有且無(wú)用,則可以刪除($ ssh-add -D)
(2)$ ssh-add ~/.ssh/id_rsa_github
將生成的rsa私鑰添加到ssh-agent中
3.遠(yuǎn)程添加公鑰
(1)$ cat ~/.ssh/id_rsa_github.pub
查看公鑰,然后將公鑰拷貝。(也可以通過(guò)終端的拷貝命令$ pbcopy < ~/.ssh/id_rsa_github.pub)
(2)打開(kāi)git賬號(hào),然后添加公鑰。
路徑:Settings-->SSH and GPG keys-->New SSH key(有些gitlab的路徑不一定一致)
4.config配置
(1)$ vim ~/.ssh/config
配置config
(2)config的設(shè)置內(nèi)容
#github
Host github.com//git的域名
Identityfile ~/.ssh/id_rsa_github//對(duì)應(yīng)私鑰文件的路徑
IdentitiesOnly yes//防止提供不相關(guān)的密鑰
User xxx//git的userName
[1]多個(gè)git需要多個(gè)配置
5.測(cè)試
$?ssh -T git@github.com??
若成功,返回Welcome to xx, 'your username'?
$?ssh -vT git@github.com? (會(huì)返回debug的log)
坑:
Too many authentication failures for git。(git認(rèn)證失敗太多。)
ssh-agent中的rsa有問(wèn)題
[1]查看rsa $ ssh-add -l
[2]config配置?IdentitiesOnly yes
[3]建議清除ssh-agent中的rsa,然后重新配置。
拓展:
~/.ssh下有個(gè)known_hosts的文件。這個(gè)文件是記錄每個(gè)你訪問(wèn)git的公鑰。當(dāng)下次訪問(wèn)git時(shí),OpenSSH會(huì)核對(duì)公鑰。如果公鑰不同,OpenSSH會(huì)發(fā)出警告, 避免你受到DNS Hijack之類的攻擊。
如果多系統(tǒng)使用同一ip,登錄過(guò)一次后就會(huì)把ssh信息記錄在本地的~/.ssh/known_hsots文件中,切換該系統(tǒng)后再用ssh訪問(wèn)這臺(tái)主機(jī)就會(huì)出現(xiàn)沖突警告。?
有以下兩個(gè)解決方案:?
1. 手動(dòng)刪除修改known_hsots里面的內(nèi)容 (需要每次手動(dòng)刪除文件內(nèi)容,比較麻煩,但是安全性高)
2. 修改配置文件“~/.ssh/config”,加上這兩行。 (SSH連接時(shí)會(huì)忽略known_hsots的訪問(wèn),安全性降低)
StrictHostKeyChecking no?
UserKnownHostsFile /dev/null?