OpenSSH for Windows 之 ssh-agent 安裝與私鑰保存探密
| | 0 | |
最近遇到 Chocolatey 安裝 OpenSSH 需要補設定 ssh-agent 服務的狀況。
上面這句話一次來三個專有名詞,先幫不熟悉這塊的朋友補充背景資訊:
- SSH 是 Linux 世界通用的加密網路傳輸協定,常用於遠端登入及檔案傳輸
- OpenSSH for Windows 是微軟官方版本的 SSH 伺服器及客戶端,可讓 Windows 使用 SSH 登入 Linux,或開放其他主機以 SSH 登入 Windows
- ssh-agent 服務可安全保存金鑰並省下每次輸入密碼的麻煩
- 指令式軟體安裝服務比較:Chocolatey、Scoop 與 winget
我現在新裝 Windows 都習慣改用 Chocolatey 下指令裝完必備軟體 (延伸閱讀:Windows 新裝機 Chocolatey 安裝清單,在 Linux 體驗過用終端機下指令裝軟體、建容器到跑伺服器一氣喝成,便回不去「下載安裝檔跑程式按下一步下一步」的安裝節奏。
而在 Windows 用 SSH 登入 Linux,我也學會使用比帳號密碼更安全的 SSH 金鑰 (長度遠比密碼長,不會被暴力破解),金鑰還可以存入 ssh-agent 使用 Windows 內建安全機制保存,做到不在同一台機器用同一個帳號就解不開的保護效果(延伸閱讀:Windows 無腦加解密 - ProtectedData),即維持安全性又省去每次登入敲密碼的功夫,一樣也是讓人用過就回不去的美好體驗。
而最近操作一台很久沒用的 Windows,發現每次 SSH 登入讀取金鑰都要輸入密碼,想啟用 ssh-agent 卻沒安裝 ssh-agent 服務。研究了一下得到結論:
- 跑 OpenSSH for Windows 安裝程式或在 Windows 11 安裝選用功能 OpenSSH Client 會自動安裝 ssh-agent 服務 (名稱為 OpenSSH Authentication Agent),但預設為 Disabled,若要使用 ssh-agent 需先啟用它:
- 透過 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