AdSense

網頁

2021/7/14

GitLab Windows 10 使用SSH取得專案 clone with SSH

在Windows 10以SSH的方式從GitLab clone project的方式如下。


檢查SSH keys

到使用者資料夾C:\Users\<user>\中看是是否有.ssh資料夾(<user>為你的Windows用戶名稱,本範例為john),如果有的話點進去看是否有下表中任一SSH keys檔案。下表的第一欄為加密方式,第二欄為公鑰檔名,第三欄為私鑰檔名。若SSH keys已存則跳過「產生SSH keys」的步驟。

加密算法 Public key Private key
ED25519 (preferred) id_ed25519.pub id_ed25519
RSA (at least 2048-bit key size) id_rsa.pub id_rsa
DSA (deprecated) id_dsa.pub id_dsa
ECDSA id_ecdsa.pub id_ecdsa


產生SSH keys

在Windows 10可使用Git Bash命令列產生SSH keys,預設會把產生的SSH keys存在C:\Users\<user>\.ssh目錄。下面示範產生RSA 2048位元的SSH keys的方式。

開啟Git Bash,輸入ssh-keygen - t rsa -b 2048 -C <email><email>輸入你的信箱。

$ ssh-keygen - t- rsa - b 2048 -C john@abc.com
Generating public/private rsa key pair.

然後出現要把產生的SSH keys黨要存在哪裡的提問,直接按Enter鍵使用預設位置/c/Users/<user>/.ssh/id_rsa

Enter file in which to save the key (/c/Users/john/.ssh/id_rsa):

然後會出現提示要輸入passpharse的訊息按Enter鍵跳過。

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

最後會提示把產生的SSH keys放到指定的位置。

Your identification has been saved in /c/Users/john/.ssh/id_dsa.
Your public key has been saved in /c/Users/john/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:7jyDUHfNi/kNFLRXutR/.... john@abc.com
The key's randomart image is:
+---[RSA 2048]---+
|           ..   |
|          ..  + |
|         o..+ . |
|   .. . . +o o .|
|   .o.S. + .o o |
|  .o .  o.o. . .|
|.  oo.+ ..0=    |
| +.  +=+=o  ++. |
|E. . oB*.oo.oo..|
+----[SHA256]----+


複製public key到GitLab

到SSH keys預設的存放位置C:\Users\<user>\.ssh找到產生的SSH keys。用記事本或Notepad++開啟public key檔id_rsa.pub,內容為ssh-rsa後接一長串亂碼如下,按Ctrl + A複製全部內容。

ssh-rsa
AAAAAB3NzaC1yc....................................................................
..................................................................................
......................................................................7QEO9eOoMtPd
john@abc.com

登入GitLab網頁,點選右上方的使用者頭像,點選[Preferences],在左側選單找到[SSH Keys]。在[Key]欄位貼上剛剛從id_rsa.pub中複製的內容,然後點Add key


使用SSH Clone專案

在GitLab專案的Clone按鈕複製[Clone with SSH]欄位的內容例如git@gitlab.abc.com:demos/demo.git,然後在Git Bash輸入
git clone git@gitlab.abc.com:demos/demo.git
即可把專案clone到命令執行的所在目錄。

$ git clone git@gitlab.abc.com:demos/demo.git
Cloning into 'demo'...
remote: Enumerating objects: ..., done.
...
Resolving deltas: 100% (...), done.

雖然沒試過,但我想此做法也適用於github。


沒有留言:

AdSense