2023年2月3日

TortoiseGit 以 SSH 連結 GitLab

TortoiseGit 以 SSH 連結 GitLab

使用 TortoiseGit 以 SSH 連結 GitLab,因 RSA private key 格式不同,而有兩種方式。

TortoiseGit 所使用的 SSH Client 預設為 TortoiseGitPlink.exe,必須搭配其 PuTTYgen 所產出的 .ppk 檔案。

若要使用 OpenSSH 則需要變更 SSH Client 的設定。

使用 PuTTYGen

建立 RSA Public/Private Key

安裝 TortoiseGit 後,PuTTYgen 也會同時存在 C:\Program Files\Git\usr\bin 的目錄下。在 Windows 搜尋 PuTTYGen 便可以找到此程式。

開啟 PuTTYgen 程式,選擇 RSA (預設),並點選 generate 按鍵後,不斷移動滑鼠,便可建立 public/private key pair。
PuTTYgen generate

Public key 會直接呈現在 PuTTY Key Generator 的畫面上,可用來複製到 GitLab 中,而 private key 則可點選 Save private key 按鍵,存放在指定的目錄下,以便提供給 TortoiseGit 使用。

PuTTYgen key pair

將 Public Key 複製到 GitLab

點選 GitLab 右上角 icon,進入 Preferences 畫面。選擇 SSH Keys 功能,將 public key 複製到 Key 的 textbox 中。

gitlab ssh

TortoiseGit 指定 Private Key

開啟 TortoiseGit Settings,點選左側樹狀 Git 選項,再點選 Edit global.gitconfig 按鍵,開啟編輯視窗。

Tortoise Setting SSH

參考下列範例,設定 puttykeyfile 指向 RSA private key 所存放的位置:

[user]
	name = your-name
	email = your-name@domain-name.com
[remote "origin"]
	puttykeyfile = c:\\ssh\\private-key.ppk

透過 SSH Clone 原始碼

首先進入 GitLab 網站,選擇專案,如下圖示,點選 Clone 並複製 Clone with SSH 裡的內容:
gitlab clone by ssh

以檔案總管建立專案目錄,並以 Tortoise 的 Clone 功能,確定 Load Putty Key 指到 RSA private 所在位置,按下 OK 便可完成作業:
tortoise clone by ssh

使用 OpenSSH

另一個方法是採用 OpenSSH 來建立 RSA Key Pair。首先透過 PowerShell 以下列指令來建立:

ssh-keygen -o -t rsa -C "your@email.com"

上列指令所使用的參數說明如下表:

參數 說明
-o 使用 open ssh 演算法
-t rsa 採用 rsa
-C “…” 加入註解

執行 ssh-keygen 之後,將於c:\Users\<user-name>\.ssh 目錄中產出 id_rsa 與 id_rsa.pub 兩個文字檔案。其中 id_rsa 存放 RSA private key,而 id_rsa.pub 存放的是 RSA public key。

產出 RSA key pair 後,先將 id_rsa.pub 內容 (public Key) 複製到 GitLab 的 SSH Key 中。您可以嘗試直接在 PowerShell 下 git clone 指令,將原始碼複製到本機:

git clone git@gitlab.com:microsystex/date-calculator.git

如果要使用 TortoiseGit 的 Clone 功能,則需要修改 SSH client。如下圖所示,開啟 TortoiseGit Settings,點選 Network,將 SSH client 由預設的 C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe 改為C:\Program Files\Git\bin\sh.exe

Tortoise SSH client

如此,便能以 OpenSSH 作為 TortoiseGit 與 GitLab 的連線安全機制了。


參考資料:


沒有留言:

Deploying Vue & .NET with Google OAuth on GCP Cloud Run

Deploying Vue & .NET with Google OAuth on GCP Cloud Run Deploying Vue & .NET with Google OAuth on GCP Cloud Run...