大多数开发者和系统管理员都爱用 Secure Shell(SSH)来远程连上托管服务器或任意云服务——毕竟在 Linux 上,SSH 是开箱即用的。可 Windows 呢?没错,微软的操作系统上自带 SSH 客户端,但没有服务端那一套。所以本文就来聊聊,如何用 Winget 这个命令行包管理器,在 Windows 11 或 10 上快速把 OpenSSH 服务端包装好。
本教程专门讲用 Winget 安装 SSH,从「SSH 是什么」讲到「为什么你需要它」,再到「如何验证安装」。
SSH 是什么,为什么你需要它?
SSH(Secure Shell)是一种通过加密网络安全连接远程系统的协议。它被广泛用于:
- 远程服务器访问 —— 需要快速下发命令、管理该系统而又不必亲临现场时。
- 用 SCP 和 SFTP 做加密文件传输。
- 隧道与端口转发
懂得如何安装和使用 SSH,是折腾 Linux 服务器、云实例或 Git 仓库的必备技能。
Winget 是什么?
对包管理器不熟的人听好:Winget 是微软为 Windows 10 和 11 系统开发的一款开源命令行工具。它让用户可以经由 CMD 或 PowerShell 界面安装应用程序包,省去了挨个访问软件官网手动下载的麻烦。举个例子,要在 Windows 上装 Google Chrome,我们不必去它官网,跑一条 Winget 命令就搞定了。甚至升级或卸载应用,也只需一条命令,无需手动下载安装包。
简而言之,Winget 让装软件变得极其轻松。如果你初次接触这工具,可以看看我那篇用 Windows 包管理器通过命令安装应用的指南。
同理,用 Winget 安装 SSH 更快,还能确保你拿到的是最新的官方版本,不用到处找下载。
如何用 Winget 安装 SSH
进入本教程的正题。以下是安装 OpenSSH 服务端要走的步骤。不过,不想用 Winget 的人,也可以用 PowerShell 命令行来装 OpenSSH 服务端。
第 1 步:打开 PowerShell 或命令提示符
安装应用需要管理员权限,所以我们必须以管理员身份启动命令提示符或 PowerShell。做法是:右键点击 Windows 开始按钮,点「终端(管理员)」或「Windows PowerShell(管理员)」。
第 2 步:搜索 OpenSSH 包
我们得先确认 OpenSSH 包在 Winget 仓库里有没有,于是在命令终端里输入:
```Bash/Shell winget search openssh
如截图所示,我们的查询有两个相关包。这里,我们将安装 **Beta** 版本。

### 第 3 步:运行 Winget SSH 安装命令
借助上一步的命令,我们就知道了想装的那个包确切的 App ID。于是,用「winget install」命令来获取 OpenSSH Beta 包。
```Bash/Shell
winget install Microsoft.OpenSSH.Beta
这条命令做了这些事:
- 拉取 Microsoft OpenSSH 包。
- 从 Winget 仓库安装最新的可用版本。
- 确保包被正确安装,无需手动下载。
第 3 步:验证 SSH 安装
安装完成后,跑下面这条确认 SSH 是否装好了:
```Bash/Shell ssh -V
它会返回已安装的 SSH 版本,确认安装成功。另外,Winget 可不只用来装 SSH——它能安装各种应用。比如,你可以用一条简单命令通过 Winget 安装 7-Zip 这类软件,或者像 Microsoft Teams 这样的效率工具。
> 译者注:原文这里两个小节都标成了「第 3 步」,第二个应为「第 4 步」。
## 如何在 Windows 上启用并启动 SSH
安装 SSH 只是整个流程的一部分。要把它当作 Windows 10 或 11 的服务端来用,你还得启用并启动 SSH 服务。
### 第 1 步:启用 SSH 服务
在 PowerShell 里运行下面这条命令来启用 SSH。它会确保每次开机时 SSH 都自动启动。
```Bash/Shell
Set-Service -Name sshd -StartupType Automatic
第 2 步:启动或停止 SSH 服务
现在,要用 PowerShell 手动启停 Windows 上的 SSH 服务端服务,命令如下。
手动启动 SSH 服务端,输入:
```Bash/Shell Start-Service -Name sshd
**需要停止 SSH 时,用:**
```Bash/Shell
Stop-Service -Name sshd
第 3 步:让 SSH 通过 Windows 防火墙
默认情况下,SSH 的 22 端口是允许通过 Windows Defender 防火墙通信的;但如果没有,我们可以用下面这条命令放行。这样就能接受通过 SSH 来的远程连接了。
```Bash/Shell New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
现在,你的系统就准备好接受 SSH 连接了!

## 如何在 Windows 10 或 11 上使用 SSH
到这里,我们已经聊完了用 Winget 安装 SSH 服务端的过程。来看几个基本用法:
### 1. 连接远程服务器
有了 SSH,我们就能用它来在 Windows 上安全地连接服务器,不管是 Linux VPS 还是云实例(比如 AWS、Azure 或 DigitalOcean)。下面是用 SSH 登录的例子:
```Bash/Shell
ssh username@your-server-ip
举例来说,如果你的服务器 IP 是 192.168.1.100、用户名是 admin,就运行:
```Bash/Shell ssh admin@192.168.1.100
如果是第一次连接,你会看到一个**指纹确认**提示——输入 `yes` 继续。
### 2. 用 SCP 安全传输文件
想在 Windows 机器和远程服务器之间传文件?用 SCP:
```Bash/Shell
scp myfile.txt user@remote-ip:/home/user/
这会把 myfile.txt 安全地复制到远程机器的 /home/user/ 目录。
3. 创建 SSH 密钥实现免密登录
与其每次敲密码,不如用 SSH 密钥:
在 Windows 上生成 SSH 密钥
在 PowerShell 里运行这条命令:
```Bash/Shell ssh-keygen -t rsa -b 4096 -C "user@example.com"
然后,把你的公钥复制到远程服务器:
```Bash/Shell
ssh-copy-id user@remote-ip
现在,你就能免输密码登录了!
SSH 安装问题排查
要是碰上问题,这儿有几个修复办法:
1. 提示找不到 Winget 命令
如果 winget 不被识别,确认你用着 Windows 10(1809 版或更高)或 Windows 11。如果确实没有,就从微软商店安装 App Installer 包。
2. 提示找不到 SSH 命令
如果装完后 ssh 用不了,重启电脑,或手动把 SSH 加到系统的 PATH 变量里:
```Bash/Shell setx PATH "%PATH%;C:\Windows\System32\OpenSSH"
然后重启 PowerShell,再试一次 `ssh -V`。
### 3. SSH 服务起不来
如果 SSH 没启动,运行:
```Bash/Shell
Get-Service sshd
如果它处于停止状态,用下面这条重启它:
Bash/Shell
Start-Service sshd
译者注:原文这里写成了
Start-Service ssh,漏了末尾的 d,服务名应为 sshd。
写在最后
如本文所示,用 Winget 在 Windows 上装 SSH 很简单,一条命令就能搞定。等你在 Windows 11 或 10 上把 SSH 完整配置好,用 Git 管理云服务器、或自动化执行任务都会变得轻松。想找替代方案的人,可以试试 SSH 隧道或结合 Windows Subsystem for Linux(WSL)配置 SSH——后者更简单、更灵活,尤其当你熟悉 Ubuntu Linux 命令时。