Windows安装及使用OpenSSH指南

OpenSSH 是一款功能强大的网络连接工具,广泛用于远程登录和文件传输。本文将详细介绍如何在 Windows 系统上安装和使用 OpenSSH 客户端和服务器。

1. 检查系统是否支持 OpenSSH

OpenSSH 服务器是 Windows Server 2019 及以上版本的内置可选功能。如果你的系统版本较旧(如 Windows Server 2016 或更早),可能需要手动下载 OpenSSH。

确认系统版本:
在命令提示符或 PowerShell 中运行以下命令:

1
winver

确保你的系统是 Windows Server 2019 或更高版本。

Image

2. 通过 PowerShell 安装 OpenSSH 服务器

Windows Server 2019 及以上版本自带 OpenSSH,无需额外下载。可以通过 PowerShell 启用该功能。

以管理员身份打开 PowerShell:
右键单击“开始”菜单,选择“Windows PowerShell (管理员)”。
Image
检查 OpenSSH 是否已安装:
运行以下命令查看已安装的功能:

1
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'

输出会显示类似以下内容:

1
2
3
4
Name  : OpenSSH.Client~~~~0.0.1.0
State : NotPresent
Name : OpenSSH.Server~~~~0.0.1.0
State : NotPresent

安装 OpenSSH 服务器:
如果 OpenSSH.Server 的状态是 NotPresent,运行以下命令安装:

1
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

验证安装:
再次运行以下命令,确认状态变为 Installed:

1
Get-WindowsCapability -Online -Name OpenSSH.Server*

Image

3. 配置 OpenSSH 服务器

安装完成后,需要配置和启动 OpenSSH 服务。

启动 OpenSSH 服务:

设置 OpenSSH 服务为自动启动:

1
Set-Service -Name sshd -StartupType 'Automatic'

启动 OpenSSH 服务:

1
Start-Service sshd

输出会显示类似以下内容:

1
2
3
Status   Name               DisplayName
------ ---- -----------
Running sshd OpenSSH SSH Server

验证服务状态:
检查服务是否正在运行:

1
Get-Service sshd

确保 Status 显示为 Running。

配置防火墙:
默认情况下,OpenSSH 使用 22 端口。确保防火墙允许该端口:

1
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

注意: 一定要确保默认端口(22)或者更改的自定义端口可以访问。如果你在使用云服务器(如 AWS, Azure, Google Cloud 等),除了配置 Windows 防火墙,还必须在云厂商的控制台(安全组或网络规则)中允许相应的端口访问。

4. 配置 OpenSSH 服务器(可选)

OpenSSH 服务器的配置文件位于 C:\ProgramData\ssh\sshd_config。可以根据需要修改配置,例如:

更改默认端口:
打开 sshd_config 文件,找到 #Port 22,将其修改为自定义端口,例如:

1
Port 2222

修改后,需更新防火墙规则并重启服务:

1
Restart-Service sshd

sshd_config配置模板

1
2
3
4
5
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
AuthorizedKeysFile .ssh/authorized_keys
AllowUsers Administrator
PasswordAuthentication yes

允许或禁用密码登录:
默认情况下,密码登录是启用的。如果需要禁用密码登录并强制使用密钥认证,编辑 sshd_config,确保以下行存在:

1
2
PasswordAuthentication no
PubkeyAuthentication yes

指定允许用户:
sshd_config 文件末尾添加:

1
AllowUsers 用户名

替换 用户名 为实际的 Windows 用户名。

5. 测试 SSH 连接

从另一台电脑测试连接:
使用 SSH 客户端(如 PuTTY 或终端)连接到服务器:

1
ssh 用户名@服务器IP

示例:

1
ssh Administrator@192.168.1.100

验证密钥认证(可选):
如果启用了公钥认证,需将客户端的公钥添加到服务器用户目录下的 .ssh\authorized_keys 文件中(通常位于 C:\Users\用户名\.ssh\authorized_keys)。

5.1. 证书登录和日志

使用证书登录:
如果你使用密钥认证,可以使用 -i 参数指定私钥文件:

1
ssh -i ~/.ssh/id_rsa -v Administrator@192.168.100.2

查看详细日志:
在连接时使用 -v 参数可以查看详细的连接日志,方便排查问题:

1
ssh -v Administrator@192.168.100.2

6. 手动安装 OpenSSH(适用于旧版本系统)

如果你的 Windows Server 版本不支持内置 OpenSSH(例如 Windows Server 2016 或更早),可以手动下载并安装:

下载 OpenSSH:
访问 OpenSSH for Windows GitHub 页面
下载最新的 OpenSSH-Win64.zip 文件。

解压并安装:
将文件解压到 C:\Program Files\OpenSSH
以管理员身份运行 PowerShell,进入解压目录,执行:

1
powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1

配置和启动服务:
按照上述步骤 3 和 4 配置防火墙和服务。

7. 常见问题排查

无法连接:

  • 检查 sshd 服务是否正在运行:Get-Service sshd
  • 确保防火墙允许 22 端口(或自定义端口)。
  • 检查 sshd_config 文件是否有语法错误。

权限问题:

  • 确保 C:\ProgramData\ssh\sshd_config.ssh\authorized_keys 文件具有正确的权限。通常只有 SYSTEMAdministrators 应具有完全控制权限。
  • 可以使用 icacls 命令设置权限:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    icacls "C:\Users\Administrator\.ssh" /inheritance:r
    icacls "C:\Users\Administrator\.ssh" /grant SYSTEM:F
    icacls "C:\Users\Administrator\.ssh" /grant Administrator:F
    icacls "C:\Users\Administrator\.ssh\authorized_keys" /inheritance:r
    icacls "C:\Users\Administrator\.ssh\authorized_keys" /grant SYSTEM:F
    icacls "C:\Users\Administrator\.ssh\authorized_keys" /grant Administrator:F

    # 重置权限
    icacls "C:\Users\Administrator\.ssh\id_ed25519" /reset
    # 禁用继承
    icacls "C:\Users\Administrator\.ssh\id_ed25519" /inheritance:r
    # 授予当前用户完全控制权限(使用当前用户名的完整形式)
    icacls "C:\Users\Administrator\.ssh\id_ed25519" /grant "$($env:USERNAME):F"
    # 授予 SYSTEM 完全控制权限
    icacls "C:\Users\Administrator\.ssh\id_ed25519" /grant "SYSTEM:F"

日志查看:
OpenSSH 的日志通常位于 Windows 事件查看器中,或者检查 C:\ProgramData\ssh\logs 目录。

支付宝打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者,更多功能请访问博客站



Windows安装及使用OpenSSH指南
https://blog.fxcxy.com/2025/09/01/Windows安装及使用OpenSSH指南/
作者
spatacus
发布于
2025年9月1日
许可协议