最近遇到 Chocolatey 安裝 OpenSSH 需要補設定 ssh-agent 服務的狀況。

上面這句話一次來三個專有名詞,先幫不熟悉這塊的朋友補充背景資訊:

我現在新裝 Windows 都習慣改用 Chocolatey 下指令裝完必備軟體 (延伸閱讀:Windows 新裝機 Chocolatey 安裝清單,在 Linux 體驗過用終端機下指令裝軟體、建容器到跑伺服器一氣喝成,便回不去「下載安裝檔跑程式按下一步下一步」的安裝節奏。

而在 Windows 用 SSH 登入 Linux,我也學會使用比帳號密碼更安全的 SSH 金鑰 (長度遠比密碼長,不會被暴力破解),金鑰還可以存入 ssh-agent 使用 Windows 內建安全機制保存,做到不在同一台機器用同一個帳號就解不開的保護效果(延伸閱讀:Windows 無腦加解密 - ProtectedData),即維持安全性又省去每次登入敲密碼的功夫,一樣也是讓人用過就回不去的美好體驗。

而最近操作一台很久沒用的 Windows,發現每次 SSH 登入讀取金鑰都要輸入密碼,想啟用 ssh-agent 卻沒安裝 ssh-agent 服務。研究了一下得到結論:

  1. OpenSSH for Windows 安裝程式或在 Windows 11 安裝選用功能 OpenSSH Client 會自動安裝 ssh-agent 服務 (名稱為 OpenSSH Authentication Agent),但預設為 Disabled,若要使用 ssh-agent 需先啟用它:
  2. 透過 Chocolatey choco install openssh 安裝的話,ssh-agent 跟 ssh-add 檔案都在 C:\Program Files\OpenSSH-Win64\,但沒有註冊成服務。

問題不大,以管理者身分執行以下 PowerShell 即可:

New-Service -Name "ssh-agent" -DisplayName "OpenSSH Authentication Agent" -BinaryPathName 'C:\Program Files\OpenSSH-Win64\ssh-agent.exe' -StartupType Automatic

基於好奇,我又鑽深了一層:

OpenSSH for Windows 把私鑰存在哪裡?真的是用 DAPI 加密的嗎?(這樣才能做「到就算被偷走,不是同一台機器同一個帳號就解不開」的安全性。實測)

【答案】

存在 Registry 個人區 (HKEY_CURRENT_USER),是用 DAPI 加密無誤。(有網友實測過可成功用 DAPI 解密)

The post covers the setup and benefits of using OpenSSH for Windows, the ssh-agent service for key management, and installing software via Chocolatey. It highlights how using SSH keys stored in ssh-agent, protected by Windows’ security, offers enhanced security and convenience over traditional password logins.


Comments

Be the first to post a comment

Post a comment