Windows安装及使用OpenSSH指南
OpenSSH 是一款功能强大的网络连接工具,广泛用于远程登录和文件传输。本文将详细介绍如何在 Windows 系统上安装和使用 OpenSSH 客户端和服务器。
1. 检查系统是否支持 OpenSSH
OpenSSH 服务器是 Windows Server 2019 及以上版本的内置可选功能。如果你的系统版本较旧(如 Windows Server 2016 或更早),可能需要手动下载 OpenSSH。
确认系统版本:
在命令提示符或 PowerShell 中运行以下命令:
1 |
|
确保你的系统是 Windows Server 2019 或更高版本。
2. 通过 PowerShell 安装 OpenSSH 服务器
Windows Server 2019 及以上版本自带 OpenSSH,无需额外下载。可以通过 PowerShell 启用该功能。
以管理员身份打开 PowerShell:
右键单击“开始”菜单,选择“Windows PowerShell (管理员)”。
检查 OpenSSH 是否已安装:
运行以下命令查看已安装的功能:
1 |
|
输出会显示类似以下内容:
1 |
|
安装 OpenSSH 服务器:
如果 OpenSSH.Server 的状态是 NotPresent,运行以下命令安装:
1 |
|
验证安装:
再次运行以下命令,确认状态变为 Installed:
1 |
|
3. 配置 OpenSSH 服务器
安装完成后,需要配置和启动 OpenSSH 服务。
启动 OpenSSH 服务:
设置 OpenSSH 服务为自动启动:
1 |
|
启动 OpenSSH 服务:
1 |
|
输出会显示类似以下内容:
1 |
|
验证服务状态:
检查服务是否正在运行:
1 |
|
确保 Status 显示为 Running。
配置防火墙:
默认情况下,OpenSSH 使用 22 端口。确保防火墙允许该端口:
1 |
|
注意: 一定要确保默认端口(22)或者更改的自定义端口可以访问。如果你在使用云服务器(如 AWS, Azure, Google Cloud 等),除了配置 Windows 防火墙,还必须在云厂商的控制台(安全组或网络规则)中允许相应的端口访问。
4. 配置 OpenSSH 服务器(可选)
OpenSSH 服务器的配置文件位于 C:\ProgramData\ssh\sshd_config
。可以根据需要修改配置,例如:
更改默认端口:
打开 sshd_config
文件,找到 #Port 22
,将其修改为自定义端口,例如:
1 |
|
修改后,需更新防火墙规则并重启服务:
1 |
|
sshd_config配置模板
1 |
|
允许或禁用密码登录:
默认情况下,密码登录是启用的。如果需要禁用密码登录并强制使用密钥认证,编辑 sshd_config
,确保以下行存在:
1 |
|
指定允许用户:
在 sshd_config
文件末尾添加:
1 |
|
替换 用户名
为实际的 Windows 用户名。
5. 测试 SSH 连接
从另一台电脑测试连接:
使用 SSH 客户端(如 PuTTY 或终端)连接到服务器:
1 |
|
示例:
1 |
|
验证密钥认证(可选):
如果启用了公钥认证,需将客户端的公钥添加到服务器用户目录下的 .ssh\authorized_keys
文件中(通常位于 C:\Users\用户名\.ssh\authorized_keys
)。
5.1. 证书登录和日志
使用证书登录:
如果你使用密钥认证,可以使用 -i
参数指定私钥文件:
1 |
|
查看详细日志:
在连接时使用 -v
参数可以查看详细的连接日志,方便排查问题:
1 |
|
6. 手动安装 OpenSSH(适用于旧版本系统)
如果你的 Windows Server 版本不支持内置 OpenSSH(例如 Windows Server 2016 或更早),可以手动下载并安装:
下载 OpenSSH:
访问 OpenSSH for Windows GitHub 页面。
下载最新的 OpenSSH-Win64.zip
文件。
解压并安装:
将文件解压到 C:\Program Files\OpenSSH
。
以管理员身份运行 PowerShell,进入解压目录,执行:
1 |
|
配置和启动服务:
按照上述步骤 3 和 4 配置防火墙和服务。
7. 常见问题排查
无法连接:
- 检查
sshd
服务是否正在运行:Get-Service sshd
。 - 确保防火墙允许 22 端口(或自定义端口)。
- 检查
sshd_config
文件是否有语法错误。
权限问题:
- 确保
C:\ProgramData\ssh\sshd_config
和.ssh\authorized_keys
文件具有正确的权限。通常只有SYSTEM
和Administrators
应具有完全控制权限。 - 可以使用
icacls
命令设置权限:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15icacls "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
目录。
如果文章对你有帮助,欢迎点击上方按钮打赏作者,更多功能请访问博客站