引言
以前在的公司用的VisualStudio2015+svn來開發和管理代碼,現在新公司要求使用IntellijIDEA+Git來開發和管理代碼,然而這兩款工具對我而言簡直就是我知識的盲區呀!在配置git ssh key的過程中,入過多個坑,尤其是配置多個git服務器的ssh key,讓我沒少折騰,現在我把經驗和過程記下來,一來是避免以后換系統需要重新配置忘了怎么操作,二來也為了把我跌過的坑跟大家分享一下!
本次記錄:Win7 64位 系統
我按照多位前輩整理的管理配置git ssh key的各種資料,才發現,為什么我測試ssh -T git@github時能成功連上,而測試連接我們公司的服務器地址時,就是提示"ssh:connect to host XXXX port 22: Connecttion timed out",或者出現Permission denied (publickey)的問題,最后終于完美解決問題,下面跟大家分享一下我遇到的這些坑兒~
坑一:github/gitlab/公司自己搭建的gitlab服務,它們是不一樣的
作為一個使用git的新手,我個人注冊了一個git賬號,用的是github來管理代碼,而公司用的自己搭建的gitlab來管理代碼。下面三張圖分別是github.com,gitlab.com和自己公司的登錄界面,
之前我把ssh key的公鑰復制,登錄公司的gitlab服務器后,將它add 到了我的setting->SSH KEY中,同樣也把公鑰加到了我個人的github上,執行ssh -T git@github.com是可以連通的,但是用ssh --T git@公司服務器地址,怎么都不成功,原來是因為沒有對git賬號做多個ssh key的配置。用如何生成ssh key 完成了我的ssh key生成。按照網上的資料生成的應該就只有下圖兩個箭頭指向的文件,
那么我這里的其他文件都是干嘛的?又是怎么來的呢?繼續看下去~
坑二:使用全局的user也可以配置多個ssh key
之前我在想,既然要配置個人的github,又要配置公司的gitlab,網上說要取消全局user的配置,那我就取消吧,但是取消后又忘了怎么配置非全局user.name和user.email,沒辦法,就用全局的吧 git config --global user.name "zhangsan",git config --global user.email "zhangsan@163.com",配置好了過后,下面進入重點。
坑三:最好生成兩個不同的ssh key
先看看.ssh文件夾里的這些文件都是干嘛用的,看圖:
下面,先在.ssh文件夾里生成兩個ssh key,名字分別叫id_rsa和id_rsa_github,具體實現可參照這位前輩的手法:同一個電腦多個ssh-key的管理(popfisher)生成之后相信你就可以看到下圖紅框中的四個文件,當然,如果你手速快,將兩個公鑰分別已經加到了你的賬號中的SSH KEY中的話,并且測試連接過的話,那么就會有known_hosts文件。
以添加公司的SSH KEY為例,github.com和gitlab.com的和這個類似,找到SSH KEYS就好辦了,見下圖
看到這里或許你的ssh --T git@服務器地址 還是失敗的,為什么呢?因為還沒配置config呀!
坑四:config怎么生成,怎么配置,里面的內容都代表什么意思,我原來真的不懂
首先在git bash中,用命令:cd .ssh或者cd ~/.ssh(注意空格哈)進入到.ssh文件夾,用命令:touch config新建config文件,之前有前輩用vim config, 然后在git bash中編輯內容,但是用wq退不出來了,強行關閉后發現生成了一個.config.ssh的文件,編碼格式也存在問題,所以我還是用的touch config,生成后,在.ssh文件夾中找到剛才生成的config文件,用記事本或者notepad++或者EditPlus文字編輯工具打開,下面看看我的config里有些啥,它們是什么東東?
當.ssh文件中有了這個手動添加的config文件后,git就會先去找這個config文件,根據里面的配置信息,去判斷你用的哪個公鑰去連接哪個git服務器。
坑五:部分服務器地址有特殊配置端口號的,一定不能忽略
提示Permission denied (publickey),大部分可能是把生成的公鑰復制粘貼錯了位置,比如你要測試github的連接,但是卻把公鑰粘貼到了gitlab上;還有可能就是你按照方法多次生成了默認的id_rsa和id_rsa.pub文件,沒有把最新的公鑰復制粘貼到個人賬號的SSH KEYS中。
提示ssh:connect to host XXXX port 22: Connecttion timed out說明你的公鑰位置沒粘貼錯,很大可能是.ssh中添加config文件中的配置不完善,比如我們公司的gitlab服務器地址中有配置端口號,而github.com不需要特別配置端口號,之前我就是忽略了端口號的配置,才讓我折騰了好久好久,找各種原因,終于,在config中添加了一個Port 端口號,就解決問題了。
windowws下Git多賬號配置命令小計
1.生成github.com對應的私鑰公鑰
ssh-keygen -t rsa -C 122799@qq.com? ? ? 創建github對應的sshkey
2.生成config文件
cd ~/.ssh? ? ? ? ? ? ? ? ? ? ? ? ? ? 在git bash中進入到.ssh的文件夾下,
touch config? ? ? ? ? ? ? ? ? ? ? ?創建config文件
3.測試連通服務
ssh -T git@github.com? ? ? ? ?測試連通服務地址
以上是個人在配置ssh key時遇到的問題和解決辦法,因首次接觸git,如有認知錯誤的地方,望看到的小伙伴指正一下,謝謝~