用系統管理員 PowerShell 安裝 OpenSSH Server 功能並設成自動啟動;在 sshd_config 關掉 PasswordAuthentication 之外,KbdInteractiveAuthentication 也要關,否則還是能用密碼登入;防火牆規則只放行 Tailscale 的 100.64.0.0/10。帳號在 Administrators 群組時,公鑰要放 C:\ProgramData\ssh\administrators_authorized_keys,且檔案權限只能留 Administrators 與 SYSTEM,否則金鑰登入會失敗又沒有錯誤訊息。Windows 11 家用版也能裝。
要從另一台電腦遠端管理 Windows 筆電,最單純的方式是開 SSH。這份整理依我們 2026 年 11 月替公司一台 Windows 11 家用版筆電設定的過程:只接受金鑰、只從 Tailscale 內網連入。指令以 Windows PowerShell 為準。
安裝元件、改系統設定、防火牆規則都會改變系統安全設定,要由電腦的使用者本人開系統管理員視窗並按 UAC 確認。
這份手冊適合誰
- 要從 Mac 或 Linux 用 SSH 管理 Windows 電腦的人。
- 電腦已經裝好 Tailscale,想讓 SSH 只在 Tailscale 內網開放、不對外。
先確認 Windows 版本與狀態
- 開始 → 輸入
winver,看 Windows 版本。Windows 11 家用版也有內建的 OpenSSH Server 功能,我們這台就是家用版 25H2。 - 在一般 PowerShell 執行
Get-Service sshd:- 出現「找不到任何服務名稱為 'sshd' 的服務」代表還沒裝。
- 執行
net session出現「存取被拒」,代表目前不是系統管理員視窗,後面的步驟都要改用系統管理員視窗。


開啟系統管理員 PowerShell
- 開始 → 搜尋 PowerShell → 在「Windows PowerShell」按右鍵 →「以系統管理員身分執行」。
- 使用者帳戶控制(UAC)視窗按「是」。
- 確認視窗標題是「系統管理員: Windows PowerShell」。


安裝 OpenSSH Server 並設成自動啟動
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH.Server*'
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Set-Service sshd -StartupType Automatic
Start-Service sshd
- 安裝要從 Windows Update 下載元件。我們這台花了約 25 分鐘;進度條跑完後還會停一陣子才結束,這是正常的。
- 第一次啟動 sshd 時,系統會建立設定檔
C:\ProgramData\ssh\sshd_config和主機金鑰。

關掉密碼登入,只收金鑰
- 先備份設定檔:
Copy-Item C:\ProgramData\ssh\sshd_config C:\ProgramData\ssh\sshd_config.bak - 用記事本(系統管理員身分)開
C:\ProgramData\ssh\sshd_config,確認以下四行存在且沒有被#註解:PasswordAuthentication no KbdInteractiveAuthentication no PubkeyAuthentication yes PermitEmptyPasswords no - 檢查設定檔語法,沒有輸出就是正確:
& "$env:WINDIR\System32\OpenSSH\sshd.exe" -t
🔴 只關 PasswordAuthentication 不夠。 我們第一次只關了這一項,從別台測試時伺服器仍然提供
keyboard-interactive登入方式,等於還能輸入密碼。要把 KbdInteractiveAuthentication 也設成no。
防火牆只放行 Tailscale 網段
SSH 用的防火牆規則名稱是 OpenSSH-Server-In-TCP(允許 TCP 22)。先確認規則存在,沒有就建立,再把來源限制在 Tailscale 使用的 100.64.0.0/10:
if (-not (Get-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -ErrorAction SilentlyContinue)) {
New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Direction Inbound -Protocol TCP -LocalPort 22 -Action Allow
}
Set-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -RemoteAddress '100.64.0.0/10' -Profile Any -Enabled True
Get-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' | Get-NetFirewallAddressFilter
這樣即使筆電接在公共網路上,SSH 也只接受 Tailscale 內網連入。

放入公鑰(系統管理員帳號要放對位置)
Windows 版 OpenSSH 的預設設定裡有一段 Match Group administrators:
- 帳號在 Administrators 群組:只讀
C:\ProgramData\ssh\administrators_authorized_keys,不讀使用者目錄下的.ssh\authorized_keys。 - 一般帳號:讀
C:\Users\<帳號>\.ssh\authorized_keys。
系統管理員帳號的做法:
- 把要連入那台電腦的公鑰(
ssh-ed25519 …開頭的一行)加進C:\ProgramData\ssh\administrators_authorized_keys。只放公鑰,私鑰不要複製過來。 - 把檔案權限收到只剩 Administrators 與 SYSTEM:
icacls C:\ProgramData\ssh\administrators_authorized_keys /inheritance:r /grant 'Administrators:F' /grant 'SYSTEM:F' - 重新啟動 sshd:
Restart-Service sshd
這個檔案的權限如果多了其他使用者,金鑰登入會直接失敗、畫面上不會有任何錯誤。照上面的
icacls收權限就不會遇到。
從另一台電腦驗證
在同一個 Tailscale 網路的另一台電腦執行:
- 金鑰登入成功:
回傳ssh <Windows 帳號>@<Windows 的 Tailscale IP> "whoami"電腦名稱\帳號就代表成功。第一次連線會詢問或提示加入 known hosts,屬正常。 - 確認不能用密碼:
只能回ssh -o PreferredAuthentications=password,keyboard-interactive -o PubkeyAuthentication=no <帳號>@<IP>Permission denied (publickey)。如果還出現輸入密碼的提示,回頭檢查KbdInteractiveAuthentication。
Tailscale 沒連線時
SSH 只開放給 Tailscale 網段,所以 Tailscale 沒連上時就連不進來:
- 我們這台的 Tailscale 設定是:有人登入 Windows 後自動連線,鎖定畫面不影響。
- 重開機後還沒有人登入的這段時間不會連線。需要在這段時間也能連時,可以在 Tailscale 開「Run unattended」。我們這台是隨身筆電,所以沒有開。
常見問題
Windows 11 家用版可以裝 OpenSSH Server 嗎?
可以。家用版也有內建的 OpenSSH Server 功能,用系統管理員 PowerShell 執行 Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 安裝。
已經設 PasswordAuthentication no,為什麼還能輸入密碼?
Windows 版 OpenSSH 還會提供 keyboard-interactive 登入方式。要在 sshd_config 也設 KbdInteractiveAuthentication no,重新啟動 sshd 後再測一次。
Windows 系統管理員帳號用金鑰登入一直失敗?
帳號在 Administrators 群組時,公鑰要放在 C:\ProgramData\ssh\administrators_authorized_keys,不是使用者目錄的 .ssh\authorized_keys;而且這個檔案的權限只能留 Administrators 與 SYSTEM,否則會靜默失敗。
怎麼讓 Windows 的 SSH 只能從 Tailscale 連?
把防火牆規則 OpenSSH-Server-In-TCP 的來源位址設為 100.64.0.0/10(Tailscale 使用的網段)。這樣即使在公共網路上,也只有 Tailscale 內網的裝置連得進來。