前言
在從github/gitee遠端倉庫獲取程式碼時,除了使用https方式,我們還可以使用ssh連線的方式與遠端倉庫伺服器通訊,其好處是有時會比https更方便、穩定、快速。
和與普通的linux伺服器連線一樣,為了免去每次遠端操作都要輸入使用者名稱和密碼的苦惱,我們可以選擇使用 金鑰對 的方式免密登入。
準備工作(win11)
使用git來clone專案有兩種方式:HTTPS和SSH:
HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證使用者名稱和密碼;
SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前新增SSH Key。SSH 在push的時候,是不需要輸入使用者名稱的,如果配置SSH key的時候設定了密碼,則需要輸入密碼的,否則直接是不需要輸入密碼的。
https的方式比較好理解,本文以SSH為例來講解Windows系統git使用ssh方式來gitee進行同步(github類似)。
Gitee 提供了基於SSH協議的Git服務,在使用SSH協議訪問倉庫之前,需要先配置好賬戶/倉庫的SSH公鑰。
1,如果是win10,則推薦本地安裝windows terminal( https://learn.microsoft.com/zh-cn/windows/terminal/install )。
2,安裝git。
3,有一個gitee賬戶並建立一個倉庫。
步驟一,生成ssh私鑰和公鑰並配置gitee公鑰
開啟terminal,執行ssh-keygen
過程會提示檔案儲存路徑、密碼,不用輸入,連續兩次回車。
開啟 C:\Users\當前使用者.ssh 目錄,會有兩個檔案id_rsa(私鑰)id_rsa.pub(公鑰)
這裡千萬注意,window自帶的ssh客戶端其配置目錄位於C:\Users\當前使用者.ssh,必須在這目錄下。
id_rsa檔案(私鑰)
id_rsa.pub檔案(公鑰)
記事本開啟id_rsa.pub公鑰檔案,複製內容到gitee公鑰裡(https://gitee.com/profile/sshkeys),標題隨便寫。點確定儲存。
注意這裡的指紋雜湊sha256和上面命令列生成的指紋是一致的,證明覆制正確
步驟二,配置ssh客戶端(踩了很多坑)
window自帶的ssh客戶端其配置目錄位於C:\Users\當前使用者.ssh
確保該目錄下的兩個檔案id_rsa(私鑰),不能改名
測試ssh是否能連線成功,terminal執行:
ssh -T git@gitee.com
提示 You've successfully authenticated
另:遇到的其他情況的處理,
步驟三,複製ssh倉庫url(非https)克隆程式碼
找到正確ssh地址
開始git clone倉庫(clone完畢後git remote -v驗證遠端連線)
踩坑總結
主要是ssh客戶端設定,window自帶的ssh客戶端,其config配置位於C:\Users\當前使用者.ssh 目錄,ssh命令執行的時候依賴.ssh目錄的配置,ssh-keygen預設生成(rsa加密)私鑰檔案id_rsa,一定位於.ssh資料夾之下,且不能改名!
如果id_rsa位於其他資料夾,例如d:\sshconfig\,那麼執行ssh命令需要加 -i引數,不過可能遭遇WARNING: UNPROTECTED PRIVATE KEY FILE!,具體解決方法可以搜尋解決
ssh -T git@gitee.com -i d:\sshconfig\
i引數說明:
-i identity_file A file from which the identity key (private key) for public key authentication is read.
參考資料:
更多關於win10 ssh客戶端的說明,參考: https://learn.microsoft.com/zh-cn/windows/terminal/tutorials/ssh
更多關於ssh命令的參考:https://www.ssh.com/academy/ssh/command
更多關於ssh-keygen命令的參考: https://www.ssh.com/academy/ssh/keygen
生成/新增SSH公鑰:https://gitee.com/help/articles/4181
前往瞭解國思RDIF低程式碼開發平臺:www.guosisoft.com