OpenSSH 是一款用于远程登录的连接工具,它使用 SSH 协议。 它会加密客户端与服务器之间的所有流量,从而遏止窃听、连接劫持和其他攻击。
OpenSSH 兼容的客户端可用于连接到 Windows Server 和 Windows 客户端设备。
Important
如果在 PowerShell/openssh-portal 的 GitHub 存储库中下载了 OpenSSH beta 版,请按照此处列出的说明进行作,而不是本文中的说明。 Win32-OpenSSH 存储库中的一些信息与预发布产品有关,在发布前可能会进行大幅修改。 Microsoft 不对此处提供的信息作任何明示或默示的担保。
Prerequisites
在开始之前,计算机必须满足以下要求:
先决条件检查
若要验证环境,请打开提升的 PowerShell 会话并执行以下操作:
输入 winver.exe ,然后按 Enter 查看 Windows 设备的版本详细信息。
运行 $PSVersionTable.PSVersion。 验证主要版本至少为 5,次要版本至少为 1。 详细了解如何在 Windows 上安装 PowerShell。
若要检查你是否是管理员,请运行以下命令。 当你是内置 Administrator 组的成员时,输出将显示 True。
(New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
启用 OpenSSH 服务器
从 Windows Server 2025 开始,OpenSSH 现在默认安装。 还可以在服务器管理器中启用或禁用 sshd 服务。
若要使用服务器管理器启用 SSHD,请执行以下操作:
在 服务器管理器的左侧导航窗格中,选择 “本地服务器”。
在 “属性” 窗口中,找到 远程 SSH 访问。
选择 “已禁用” 以启用 OpenSSH 服务。
Note
如果需要允许或限制特定用户或组使用 OpenSSH 进行远程访问,请将其添加到 OpenSSH 用户 用户组。
若要使用 PowerShell 启用 SSHD,请执行以下操作:
以管理员身份打开 PowerShell,并运行以下 cmdlet 以启动 SSHD 服务:
# Start the sshd service
Start-Service sshd
还可以运行以下可选但建议的 cmdlet 以自动启动 SSHD,以确保其保持启用状态:
Set-Service -Name sshd -StartupType 'Automatic'
最后,运行以下命令以验证 SSHD 安装过程是否自动配置了防火墙规则:
if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue)) {
Write-Output "Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, creating it..."
New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
} else {
Write-Output "Firewall rule 'OpenSSH-Server-In-TCP' has been created and exists."
}
安装 OpenSSH 服务器和客户端
要在 Windows Server 设备上安装 OpenSSH 组件,请执行以下操作:
选择 “开始”,在搜索框中键入 可选功能 ,然后选择 “可选功能”。
扫描列表,查看是否已安装 OpenSSH。 如果没有,请在页面顶部选择 “视图”功能,然后:
打开 Services 桌面应用。 (选择 “开始”,在搜索框中键入 services.msc ,然后选择 “服务 ”应用或按 Enter。
在详细信息窗格中,双击“OpenSSH SSH 服务器”。
在“ 常规 ”选项卡上的“ 启动类型 ”下拉菜单中,选择“ 自动 ”,然后选择“ 确定”。
若要启动服务,请选择“ 启动”。
Note
安装 OpenSSH 服务器将创建并启用名为 <a0/&a0> 的防火墙规则。 此规则允许端口 22 上的入站 SSH 流量。 如果未启用此规则且此端口未打开,则拒绝或重置连接。
若要使用 PowerShell 安装 OpenSSH,请执行以下操作:
以管理员身份运行 PowerShell。
运行以下 cmdlet 以确保 OpenSSH 可用:
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
如果两者均尚未安装,则此命令应返回以下输出:
Name : OpenSSH.Client~~~~0.0.1.0
State : NotPresent
Name : OpenSSH.Server~~~~0.0.1.0
State : NotPresent
之后,运行以下 cmdlet 以根据需要安装服务器或客户端组件:
# Install the OpenSSH Client
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
# Install the OpenSSH Server
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
这两个命令应会返回以下输出:
Path :
Online : True
RestartNeeded : False
若要启动并配置 OpenSSH 服务器以供初始使用,请打开提升的 PowerShell 提示符(右键单击,然后选择以管理员身份运行),然后运行以下命令以启动 sshd service:
# Start the sshd service
Start-Service sshd
# OPTIONAL but recommended:
Set-Service -Name sshd -StartupType 'Automatic'
# Confirm the Firewall rule is configured. It should be created automatically by setup. Run the following to verify
if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue)) {
Write-Output "Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, creating it..."
New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
} else {
Write-Output "Firewall rule 'OpenSSH-Server-In-TCP' has been created and exists."
}
安装 OpenSSH 服务器和客户端
要在 Windows Server 设备上安装 OpenSSH 组件,请执行以下操作:
选择“ 开始”,在搜索框中键入 可选功能 ,然后选择“ 添加可选功能”。
扫描列表,查看是否已安装 OpenSSH。 如果未安装,请在页面顶部选择“添加功能”,然后:
搜索 OpenSSH 客户端,然后选择“安装”
搜索 OpenSSH 服务器,然后选择“安装”
打开 Services 桌面应用。 (选择 “开始”,在搜索框中键入 services.msc ,然后选择 “服务 ”应用或按 Enter。
在详细信息窗格中,双击“OpenSSH SSH 服务器”。
在“ 常规 ”选项卡上的“ 启动类型 ”下拉菜单中,选择“ 自动 ”,然后选择“ 确定”。
若要启动服务,请选择“ 启动”。
Note
安装 OpenSSH 服务器将创建并启用名为 <a0/&a0> 的防火墙规则。 此规则允许端口 22 上的入站 SSH 流量。 如果未启用此规则且此端口未打开,则拒绝或重置连接。
若要使用 PowerShell 安装 OpenSSH,请执行以下操作:
以管理员身份运行 PowerShell。
运行以下 cmdlet 以确保 OpenSSH 可用:
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
如果两者均尚未安装,则此命令应返回以下输出:
Name : OpenSSH.Client~~~~0.0.1.0
State : NotPresent
Name : OpenSSH.Server~~~~0.0.1.0
State : NotPresent
之后,运行以下 cmdlet 以根据需要安装服务器或客户端组件:
# Install the OpenSSH Client
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
# Install the OpenSSH Server
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
这两个命令应会返回以下输出:
Path :
Online : True
RestartNeeded : False
若要启动并配置 OpenSSH 服务器以供初始使用,请打开提升的 PowerShell 提示符(右键单击,然后选择以管理员身份运行),然后运行以下命令以启动 sshd service:
# Start the sshd service
Start-Service sshd
# OPTIONAL but recommended:
Set-Service -Name sshd -StartupType 'Automatic'
# Confirm the Firewall rule is configured. It should be created automatically by setup. Run the following to verify
if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue)) {
Write-Output "Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, creating it..."
New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
} else {
Write-Output "Firewall rule 'OpenSSH-Server-In-TCP' has been created and exists."
}
安装 OpenSSH 服务器和客户端
要在 Windows Server 设备上安装 OpenSSH 组件,请执行以下操作:
选择 “开始”,在搜索框中键入 可选功能 ,然后选择 “可选功能 ”(也称为 “管理可选功能”)。
扫描列表,查看是否已安装 OpenSSH。 如果未安装,请在页面顶部选择“添加功能”,然后:
搜索 OpenSSH 客户端,然后选择“安装”
搜索 OpenSSH 服务器,然后选择“安装”
打开 Services 桌面应用。 (选择 “开始”,在搜索框中键入 services.msc ,然后选择 “服务 ”应用或按 Enter。
在详细信息窗格中,双击“OpenSSH SSH 服务器”。
在“ 常规 ”选项卡上的“ 启动类型 ”下拉菜单中,选择“ 自动 ”,然后选择“ 确定”。
若要启动服务,请选择“ 启动”。
Note
安装 OpenSSH 服务器将创建并启用名为 <a0/&a0> 的防火墙规则。 此规则允许端口 22 上的入站 SSH 流量。 如果未启用此规则且此端口未打开,则拒绝或重置连接。
若要使用 PowerShell 安装 OpenSSH,请执行以下操作:
以管理员身份运行 PowerShell。
运行以下 cmdlet 以确保 OpenSSH 可用:
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
如果两者均尚未安装,则此命令应返回以下输出:
Name : OpenSSH.Client~~~~0.0.1.0
State : NotPresent
Name : OpenSSH.Server~~~~0.0.1.0
State : NotPresent
之后,运行以下 cmdlet 以根据需要安装服务器或客户端组件:
# Install the OpenSSH Client
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
# Install the OpenSSH Server
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
这两个命令应会返回以下输出:
Path :
Online : True
RestartNeeded : False
若要启动并配置 OpenSSH 服务器以供初始使用,请打开提升的 PowerShell 提示符(右键单击,然后选择以管理员身份运行),然后运行以下命令以启动 sshd service:
# Start the sshd service
Start-Service sshd
# OPTIONAL but recommended:
Set-Service -Name sshd -StartupType 'Automatic'
# Confirm the Firewall rule is configured. It should be created automatically by setup. Run the following to verify
if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue)) {
Write-Output "Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, creating it..."
New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
} else {
Write-Output "Firewall rule 'OpenSSH-Server-In-TCP' has been created and exists."
}
连接到 OpenSSH 服务器
安装后,可以从安装了 OpenSSH 客户端的 Windows 或 Windows Server 设备连接到 OpenSSH 服务器。 在 PowerShell 提示符下,运行以下命令。
ssh domain\username@servername
连接后,会收到类似如以下输出的消息。
The authenticity of host 'servername (10.00.00.001)' can't be established.
ECDSA key fingerprint is SHA256:(<a large string>).
Are you sure you want to continue connecting (yes/no)?
输入 yes 会将该服务器添加到 Windows 客户端上的已知 SSH 主机列表中。
此时,服务会提示你输入密码。 作为安全预防措施,输入密码时不会显示密码字符。
连接后,你将看到以下 Windows 命令行界面提示符:
domain\username@SERVERNAME C:\Users\username>
禁用 OpenSSH 服务器
可以在服务器管理器中禁用 sshd 该服务。
若要使用服务器管理器禁用 SSHD,请执行以下作:
在 服务器管理器的左侧导航窗格中,选择 “本地服务器”。
在 “属性” 窗口中,找到 远程 SSH 访问。
选择 “已禁用” 以禁用 OpenSSH 服务。
Note
如果需要允许或限制特定用户或组使用 OpenSSH 进行远程访问,请将其添加到 OpenSSH 用户 用户组。
若要使用 PowerShell 禁用 SSHD,请执行以下作:
以管理员身份打开 PowerShell,并运行以下 cmdlet 以启动 SSHD 服务:
# Stop the sshd service
Stop-Service sshd
还可以运行以下可选但建议的 cmdlet 以自动启动 SSHD,以确保其保持启用状态:
Set-Service -Name sshd -StartupType 'Disabled'
最后,运行以下命令以禁用默认 SSHD 防火墙规则:
if ((Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue)) {
Write-Output "Firewall rule 'OpenSSH-Server-In-TCP' is being disabled."
Disable-NetFirewallRule -Name 'OpenSSH-Server-In-TCP'
} else {
Write-Output "Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, disable failed..."
}
卸载 OpenSSH 服务器和客户端
若要使用 Windows 设置来卸载 OpenSSH:
选择 “开始”,在搜索框中键入 “可选功能 ”,然后选择 “可选功能”。
扫描列表以查看是否安装了 OpenSSH:
若要使用 PowerShell 卸载 OpenSSH 组件,请执行以下步骤。
以管理员身份打开 PowerShell。
若要删除 OpenSSH,请使用以下命令:
# Uninstall the OpenSSH Client
Remove-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
# Uninstall the OpenSSH Server
Remove-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
最后,运行以下命令以删除防火墙规则:
if ((Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue)) {
Write-Output "Firewall rule 'OpenSSH-Server-In-TCP' is being removed."
Remove-NetFirewallRule -Name 'OpenSSH-Server-In-TCP'
} else {
Write-Output "Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, removal failed..."
}
卸载 OpenSSH 服务器和客户端
若要使用 Windows 设置来卸载 OpenSSH:
选择 “开始”,在搜索框中键入 可选功能 ,然后选择 “可选功能 ”(也称为 “管理可选功能 ”或 “查看可选功能历史记录”)。
在列表中,选择 OpenSSH 客户端 或 OpenSSH 服务器。
选择 “卸载”。
若要使用 PowerShell 卸载 OpenSSH 组件,请执行以下步骤。
以管理员身份打开 PowerShell。
若要删除 OpenSSH,请使用以下命令:
# Uninstall the OpenSSH Client
Remove-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
# Uninstall the OpenSSH Server
Remove-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
最后,运行以下命令以删除防火墙规则:
if ((Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue)) {
Write-Output "Firewall rule 'OpenSSH-Server-In-TCP' is being removed."
Remove-NetFirewallRule -Name 'OpenSSH-Server-In-TCP'
} else {
Write-Output "Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, removal failed..."
}
如果卸载服务时正在使用该服务,则应重启 Windows。
后续步骤
现在,你已经完成了适用于 Windows 的 OpenSSH 服务器的安装,以下是一些可以帮助你学习如何使用它的文章: