Windows SSH Agent 設定教學:開機自動啟動、載入 SSH 私鑰與使用 ssh-add
Copyright Notice: This article is an original work licensed under the CC 4.0 BY-NC-ND license.
If you wish to repost this article, please include the original source link and this copyright notice.
Source link: https://v2know.com/article/1410
在 Windows 上使用 SSH 連線遠端伺服器或 Git 儲存庫時,如果使用私鑰進行身分驗證,通常需要透過 -i 參數指定私鑰檔案。
例如:
ssh -i "C:\SSH\private-key.pem" user@example-server
如果希望由系統統一管理 SSH 私鑰,並讓後續 SSH 連線能自動使用已載入的金鑰,可以使用 Windows 內建的 OpenSSH Authentication Agent(ssh-agent)。
以下介紹三條常用的 PowerShell 命令,分別用於設定 SSH Agent 自動啟動、立即啟動服務,以及將 SSH 私鑰加入 Agent。
一、設定 SSH Agent 開機自動啟動
首先,以系統管理員身分開啟 PowerShell,執行:
Set-Service -Name ssh-agent -StartupType Automatic
各參數的作用如下:
| 參數 | 說明 |
|---|---|
Set-Service |
修改 Windows 服務的設定。 |
-Name ssh-agent |
指定要修改的服務為 SSH Agent。 |
-StartupType Automatic |
將服務的啟動類型設定為「自動」。 |
執行結果:Windows 會將 SSH Agent 設定為開機自動啟動。
需要注意,這條命令只會修改服務的啟動設定,不會立即啟動服務。
二、立即啟動 SSH Agent
接著,在系統管理員 PowerShell 中執行:
Start-Service -Name ssh-agent
這條命令會立即啟動 Windows 的 SSH Agent 服務,不需要重新開機。
Start-Service:啟動指定的 Windows 服務。-Name ssh-agent:指定啟動 SSH Agent。
前兩條命令的差異是:
| 命令 | 作用 |
|---|---|
Set-Service |
設定服務以後開機時自動啟動。 |
Start-Service |
立即啟動目前尚未運行的服務。 |
三、使用 ssh-add 載入 SSH 私鑰
SSH Agent 啟動後,就可以把現有的 SSH 私鑰加入 Agent。
使用平常操作 SSH 的同一個 Windows 帳號開啟 PowerShell,執行:
ssh-add "C:\SSH\private-key.pem"
其中:
ssh-add:將 SSH 私鑰加入 SSH Agent。C:\SSH\private-key.pem:範例私鑰檔案路徑,實際使用時需要替換為自己的私鑰位置。
執行結果:如果私鑰格式有效且載入成功,SSH Agent 就能管理並使用這把金鑰進行 SSH 身分驗證。
之後透過 SSH 連線時,SSH 客戶端便可以使用 Agent 中的金鑰,而不必每次手動指定私鑰檔案。實際使用哪把金鑰,仍取決於 SSH 客戶端的設定與遠端伺服器的驗證要求。
如果私鑰設定了密碼(Passphrase),執行 ssh-add 時可能需要輸入該密碼。
四、如何確認 SSH Agent 是否正常運作?
可以透過以下命令檢查 SSH Agent 的服務狀態:
Get-Service -Name ssh-agent
如果輸出中的 Status 顯示 Running,代表服務正在執行。
接著使用:
ssh-add -l
這條命令會列出目前 SSH Agent 中已載入金鑰的指紋資訊。
如果能看到對應金鑰,表示該金鑰已經加入 Agent。
需要注意,Windows OpenSSH Agent 通常會持久保存加入的金鑰,因此重新啟動電腦後,這些金鑰仍可能繼續可用。
五、如何移除 SSH Agent 中的金鑰?
如果不再需要某把金鑰,可以執行:
ssh-add -d "C:\SSH\private-key.pem"
這條命令會嘗試將指定金鑰從 SSH Agent 中移除。
如果需要移除 Agent 管理的所有金鑰,則可以執行:
ssh-add -D
注意:上述操作只會移除 SSH Agent 中的金鑰紀錄,不會刪除磁碟上的原始私鑰檔案。
六、安全性注意事項
- SSH Agent 不會因為執行 ssh-add 就自動把私鑰上傳到遠端伺服器。正常 SSH 驗證會透過私鑰進行簽章,而不是直接傳送私鑰內容。
- 同一個 Windows 使用者帳號下,有權存取 SSH Agent 的程式,也可能使用 Agent 中的金鑰進行身分驗證。
- 即使使用 SSH Agent,原始私鑰檔案仍應妥善保管,避免被其他人或不受信任的程式讀取。
- 如果私鑰具有正式環境伺服器的管理權限,應特別謹慎管理 Agent 與 Windows 帳號的存取權限。
七、總結
Windows 上設定 SSH Agent,主要只需要三條命令:
Set-Service -Name ssh-agent -StartupType Automatic
Start-Service -Name ssh-agent
ssh-add "C:\SSH\private-key.pem"
| 命令 | 主要作用 |
|---|---|
Set-Service |
設定 SSH Agent 開機自動啟動。 |
Start-Service |
立即啟動 SSH Agent 服務。 |
ssh-add |
將現有的 SSH 私鑰加入 Agent 管理。 |
簡單來說,第一條負責設定自動啟動,第二條負責立即啟動服務,第三條負責讓 SSH Agent 管理指定的私鑰。
完成設定後,日常使用 SSH 時便可以透過 Agent 進行金鑰驗證,減少反覆指定私鑰路徑的操作。
This article was last edited at