文章目录
Windows 新电脑:开通 OpenSSH 远程登录(图文步骤)
这份页面是临时的操作单。照着从上往下做,一般 3–5 分钟能跑通。
做完全部步骤后,你只需要把 两样东西 发出来:
① 最后一屏打印出来的 IP 地址
② 你的 Windows 用户名(whoami 反斜杠后面那半截)
密码不用发。SSH 用的密码就是你这台电脑的开机密码,你自己知道,任何一步都在本机输入即可,全程不需要离开这台电脑。
第 0 步:以「管理员身份」打开 PowerShell
这一步必须是管理员,否则会失败。
- 按
Win键(或点开始菜单) - 直接打字:
PowerShell - 在「Windows PowerShell」上点右键 → 以管理员身份运行
- 弹出「是否允许此应用对你的设备进行更改?」→ 点是
窗口标题栏应该能看到 管理员 字样。
第 1 步:复制下面整段,粘贴进去回车
在 PowerShell 窗口里点右键就是粘贴(不用按 Ctrl+V),然后按回车。
Set-Service -Name ssh-agent -StartupType Automatic -ErrorAction SilentlyContinue
Start-Service ssh-agent -ErrorAction SilentlyContinue
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Set-Service -Name sshd -StartupType Automatic
Start-Service sshd
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22 -ErrorAction SilentlyContinue
Set-ItemProperty -Path 'HKLM:SOFTWAREOpenSSH' -Name DefaultShell -Value 'C:WindowsSystem32WindowsPowerShellv1.0powershell.exe' -Force
Write-Host "`n=== 完成,下面核对 ===" -ForegroundColor Green
Get-Service sshd | Format-List Name,Status,StartType
Get-NetFirewallRule -Name sshd | Format-List DisplayName,Enabled,Action
Write-Host "你的用户名(反斜杠后面那半截就是要发出去的):" -ForegroundColor Yellow
whoami
Write-Host "你的 IP 地址(这个也要发出去):" -ForegroundColor Yellow
(Get-NetIPAddress -AddressFamily IPv4 | Where-Object {$_.IPAddress -notlike '127.*' -and $_.IPAddress -notlike '169.254.*'}).IPAddress
正常情况下的表现:
- 第 3 行(
Add-WindowsCapability)可能要等 1–3 分钟,看着像卡住是正常的,千万别关窗口、别按 Ctrl+C。 - 最后会打印出 Status: Running,以及一两行 IP(例如
192.168.1.23)。
第 2 步:自己验一下通不通
再开一个新窗口(不要关掉刚才那个):开始菜单搜 PowerShell,这次直接点左键打开就行,不用管理员。把下面这行粘进去回车:
ssh 127.0.0.1 whoami
它会问你 Are you sure you want to continue connecting (yes/no)? → 输入 yes 回车。
然后提示 password: → 输入你这台电脑的开机密码(打字时屏幕上不显示任何字符,这是正常的),回车。
✅ 成功的样子:屏幕上回显你的用户名,例如 desktop-abc123micha。
这时就可以把 IP 和用户名发出去了。
❌ 如果没成功,对照下面:
| 看到的报错 | 原因 / 怎么修 |
|---|---|
Connection refused | 服务没起来。回到管理员窗口跑:Start-Service sshd,再试一次。 |
Permission denied | 多半是微软账号登录导致的(见下方第 3 步说明)。 |
ssh 不是内部或外部命令 | 第 1 步没装成功,重跑第 1 步。 |
Add-WindowsCapability 报 0x800f0954 | 公司/组策略限制了联网装功能。改用这条装,再重跑第 1 步其余各行:Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 -Source "C:WindowsWinSxS" |
第 3 步:如果报 Permission denied(微软账号用户必看)
如果你的 Windows 是用微软账号(邮箱)登录的,密码 SSH 会被系统拒绝,这不是你操作错了。
在管理员 PowerShell 里跑这条,看结果:
Get-LocalUser -Name $env:USERNAME | Format-List Name,PrincipalSource
PrincipalSource : Local→ 没问题,直接往下走。PrincipalSource : MicrosoftAccount→ 需要额外开一下密码登录,把这一行结果告诉我就行,我给一条命令补上。
第 4 步:把这 3 行结果发出来
回到管理员那个窗口,把下面这条粘进去回车:
Write-Host "IP:"; (Get-NetIPAddress -AddressFamily IPv4 | Where-Object {$_.IPAddress -notlike '127.*' -and $_.IPAddress -notlike '169.254.*'}).IPAddress; Write-Host "USER:"; whoami; Write-Host "SRC:"; Get-LocalUser -Name $env:USERNAME | Select-Object -ExpandProperty PrincipalSource
把打印出来的三行(IP / USER / SRC)发出来,我就能接着远程给它配 DSH 了。
常见问题
Q:这些命令安全吗?
A:全部是 Windows 系统自带的官方功能,没有下载任何第三方软件(所以也不受网络环境影响)。做的事只有:装微软官方的 OpenSSH 服务端、开机自启、放行 22 端口。
Q:为什么密码不用发?
A:SSH 密码就是这台电脑的开机密码,本来就只有你知道。把它发出去等于把电脑钥匙交出去,没必要——你只要在那台电脑上自己输入就行。
Q:电脑重启后还有效吗?
A:有。第 1 步里 Set-Service -StartupType Automatic 已经设成开机自启了。
Q:弄坏了怎么办?
A:不会坏。最差情况是服务没起来,跑 Start-Service sshd 即可。想彻底撤销的话告诉我,我给卸载命令。