【git】git中使用https和ssh協議的區別以及它們的用法


git可以使用四種主要的協議來傳輸資料: 本地協議(Local),HTTP 協議,SSH(Secure Shell)協議及 git 協議。其中,本地協議由於目前大都是進行遠程開發和共享代碼所以一般不常用,而git協議由於缺乏授權機制且較難架設所以也不常用。

最常用的便是SSH和HTTP(S)協議。git關聯遠程倉庫可以使用http協議或者ssh協議。

【特點/優缺點】

ssh:

  • 一般使用22端口;
  • 通過先在本地生成SSH密鑰對再把公鑰上傳到服務器;
  • 速度相較慢點

https:

  • 一般使用443端口;
  • 通過用戶名/密碼授權,可用性比較高;
  • 速度相較快點

一般企業防火牆會打開80和443這兩個http/https協議的端口,因此在架設了企業防火牆的時候使用http就可以很好的繞開安全限制使用git了,很方便;而對於ssh來說,企業防火牆很可能沒打開22端口。

 

【使用區別】

clone項目:

  使用ssh方式時,需要配置ssh key,即要將生成的SSH密鑰對的公鑰上傳至服務器;

  使用http方式時,沒有要求,可以直接克隆下來。

push項目:

  使用ssh方式時,不需要驗證用戶名和密碼,之前配置過ssh key,(如果你沒設置密碼)直接push即可;

  使用http方式時,需要驗證用戶名和密碼。

 總結:

HTTPS利於匿名訪問,適合開源項目,可以方便被別人克隆和讀取(但沒有push權限);

SSH不利於匿名訪問,比較適合內部項目,只要配置了SSH公鑰極可自由實現clone和push操作。

 

【github上切換SSH/HTTP方式】

 

【如何生成SSH密鑰】

1、設置git的user name和user email

git config --global user.name 'yourname' 
git config --global user.email 'youremail'
// 如果之前已經設置了 那就不要加后面的yourname/youremail 直接獲取即可

2、生成SSH密鑰

輸入指令:ssh-keygen -t rsa -C “youremail”;

按回車即表示默認這個文件路徑名,接着又會提示你輸入兩次密碼(該密碼是你push文件的時候要輸入的密碼,而不是github管理者的密碼),當然,你也可以不輸入密碼,直接按回車。那么push的時候就不需要輸入密碼,直接提交到github上了。

即按三次回車后,就成功生成了id_rsa 和 id_rsa.pub 兩個文件。

打開id_rsa.pub,將內容復制到github中,路徑:Settings - SSH and GPG keys - New SSH Key

添加成功后,github就可以識別你的機器,允許你從github拉取上傳代碼了。

 

【http如何保存憑證信息】

HTTPS認證方式雖然需要輸入賬戶密碼,但現在也不需要每次都輸入。這個憑據保存需要依賴一個憑據管理器,每個操作系統平台都有自己的憑據管理器。

當我們在使用http協議push之后,賬號和密碼會自動保存至憑據管理器中(如果有的話),之后就不需要每次push的時候都輸入了。

當保存了密碼后又想要修改密碼或者刪除密碼怎么辦?

window上的git的密碼是交給window進行管理的,我們可以進入‘控制面板’ - ‘用戶賬戶’ - ‘憑證管理器’ - ‘管理Window憑據’:

打開后你就會發現:

 

 

【參考文章】

論git中使用https和ssh協議的區別

Git:SSH、SSH與HTTP區別、git常用命令

問題解決:Permission denied(publickey)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM