git中的ssh和https方式的使用(gitee爲例)

 

 

 

在使用git管理代碼,或者使用github,國內的碼雲(gitee)的時候,有兩種方式可使用,分別是https和ssh,如下均使用gitee爲例。git

    1. ssh方式

         配置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
    2. https方式

      配置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個帳號一定使用的不一樣的憑據。

相關文章
相關標籤/搜索