在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。
沒有留言:
張貼留言