前言
在從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 [email protected]
提示 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 [email protected] -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