在使用git管理代碼,或者使用github,國內的碼雲(gitee)的時候,有兩種方式可使用,分別是https和ssh,如下均使用gitee爲例。git
配置ssh,若是不配置ssh的話,clone項目的時候會報錯,緣由是沒有配置公鑰。github
1 Permission denied (publickey) 2 Could not read from remote repository.
首先,進入用戶目錄,查看本地是否已經存在公鑰文件。windows
1 cd ~/.ssh 2 ls
若是顯示文件夾不存在,則本地尚未生成密鑰文件,則使用git提供的密鑰生成工具進行生成。服務器
1 ssh-keygen -t rsa -C "xxxxx@xxxxx.com"
注意,回車後有幾回須要回車,第二部須要你設置密碼,若是不設置直接回車,則之後在使用ssh方式拉取提交代碼的時候不須要再輸入密碼。ssh
完成後,用戶文件夾下多出了一個.ssh文件夾,裏面有兩個文件,一個id_rsa 和id_rsa.pub文件,使用命令打開id_rsa.pub文件,複製內容工具
1 cat ~/.ssh/id_rsa.pub
而後粘貼到github或gitee上的公鑰中,能夠給項目添加公鑰,也能夠給本身的帳號添加公鑰,兩者的區別官方的解釋是:測試
項目的 sshkey 只針對項目,且咱們僅對項目提供了部署公鑰,即項目下的公鑰僅能拉取項目
,這一般用於生產服務器拉取倉庫的代碼。 而用戶的 key 則是針對用戶的,用戶添加了 key 就對用戶名下的項目和用戶參加了的項目具備權限,通常而言, 用戶的key具備推送和拉取的權限,而項目的 key 則只具備拉取權限。spa
輸入命令進行測試:3d
1 ssh -T git@gitee.com
若是返回 」Hi gitee用戶名xxxxxx......「 說明配置成功了。code
設置好了以後,而後拉取代碼,第一次拉取的時候,會詢問是否信任鏈接,yes就好了,就能夠正常拉取,提交代碼了,也不須要設置每次都輸入帳號和密碼了。
注意,信任完gitee的鏈接後,.ssh文件夾裏多出了一個known_hosts文件,這裏就記錄了gitee的相關鏈接信息。這裏會有一個小問題,那假如我有多個git帳號,好比:1,gitee帳號,用於本身我的 2,gihub帳號,用於公司開發,那麼怎麼配置多個密鑰呢?
解決辦法:1,生成多個密鑰文件
1 ssh-keygen -t rsa -C 'xxxxx@company.com' -f ~/.ssh/gitee_id_rsa 2 ssh-keygen -t rsa -C 'xxxxx@qq.com' -f ~/.ssh/github_id_rsa
2,在 ~/.ssh 目錄下新建一個config文件,添加以下內容(其中Host和HostName填寫git服務器的域名,IdentityFile指定私鑰的路徑)
1 # gitee 2 Host gitee.com 3 HostName gitee.com 4 PreferredAuthentications publickey 5 IdentityFile ~/.ssh/gitee_id_rsa 6 # github 7 Host github.com 8 HostName github.com 9 PreferredAuthentications publickey 10 IdentityFile ~/.ssh/github_id_rsa
3,用ssh命令分別測試
1 $ ssh -T git@gitee.com 2 $ ssh -T git@github.com
配置credential.helper,首先簡單介紹一下credential.helper這個配置項的含義:這個配置項容許用戶自行指定git所使用的憑據管理工具。SSH協議並不採用這裏討論的憑證存儲。
首先,檢查credential.helper配置,輸入命令
1 git config -l|grep credential.helper
沒有配置的話,顯示爲空,windows安裝若是安裝的是GitGUI的時候,默認是勾選manager的,credential.helper=manager,若是沒有配置的話,每次拉取,提交都須要密碼。使用如下命令配置:
1 git config credential.helper manager
再次嘗試pull代碼的時候會彈出窗口要求輸入用戶名密碼(只須要輸入這一次就ok了),之後就不須要再輸入密碼了,windows而言,這個憑據放在windows的憑據管理器中
整個過程能夠這樣描述:當配置credential.helper後,git在須要用戶名密碼時會首先向指定的憑據管理器查找憑據,若是憑據不存在(對應第一次pull),則彈窗提示用戶輸入用戶名密碼,而後憑據管理器會記錄這個憑據;若是憑據存在(對應第二次pull),則直接使用該憑據進行對應的git操做。
注意:當你須要在同一臺機器上使用多個git帳號這麼搞就不行了,由於2個帳號一定使用的不一樣的憑據。