跳转到内容

❧ Windows OpenSSH 安装与免密登录配置

一、安装 OpenSSH Server(Win32-OpenSSH)

1. 下载

前往 Win32-OpenSSH Releases 下载:

OpenSSH-Win64.zip

解压到 C:\OpenSSH 目录。

2. 安装

Terminal window
cd C:\OpenSSH
Set-ExecutionPolicy Bypass -Scope Process
.\install-sshd.ps1

3. 启动服务并设置开机自启

Terminal window
Start-Service sshd
Set-Service sshd -StartupType Automatic

4. 开放防火墙 22 端口

Terminal window
New-NetFirewallRule `
-Name sshd `
-DisplayName "OpenSSH Server" `
-Enabled True `
-Direction Inbound `
-Protocol TCP `
-Action Allow `
-LocalPort 22

二、本地 Windows 免密 SSH 连接远程 Windows

环境说明

说明
本地Windows 自带 OpenSSH
远程Windows 已开启 sshd 服务
远程账号difei,属于 BUILTIN\Administrators 管理员组

1. 本地:生成密钥对

Terminal window
ssh-keygen -t ed25519
  • 保存路径:默认回车
  • 密钥密码:直接回车留空(完全免密)

生成后的文件位置:

文件路径
私钥C:\Users\本机用户名\.ssh\id_ed25519
公钥C:\Users\本机用户名\.ssh\id_ed25519.pub

2. 远程:配置 SSH 免密

2.1 确认 OpenSSH Server 已安装并启动

设置 → 应用 → 可选功能 → 添加 OpenSSH 服务器,或使用 Win32-OpenSSH 手动安装。

Terminal window
Start-Service sshd
Set-Service sshd -StartupType Automatic

2.2 防火墙放行 22 端口

Terminal window
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH SSH Server' `
-Direction Inbound -Protocol TCP -LocalPort 22 -Action Allow -Enabled True

2.3 创建 .ssh 目录并写入公钥

在远程执行:

Terminal window
mkdir C:\Users\difei\.ssh

本地 id_ed25519.pub 的全部内容粘贴写入远程:

C:\Users\difei\.ssh\authorized_keys

3. 管理员账号特殊处理(关键)

只要账号属于 Administrators 组,普通的 .ssh/authorized_keys 不会生效,必须额外配置。

3.1 判断是否为管理员账号

Terminal window
whoami /groups

输出中出现 BUILTIN\Administrators → 必须使用以下专用配置。

3.2 复制到管理员专用密钥文件

Terminal window
copy C:\Users\difei\.ssh\authorized_keys C:\ProgramData\ssh\administrators_authorized_keys

3.3 严格设置文件权限(Windows OpenSSH 强制要求)

Terminal window
# 移除继承权限
icacls "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r
# 只允许管理员和系统访问
icacls "C:\ProgramData\ssh\administrators_authorized_keys" /grant "Administrators:(F)"
icacls "C:\ProgramData\ssh\administrators_authorized_keys" /grant "SYSTEM:(F)"

3.4 重启 sshd 服务

Terminal window
Restart-Service sshd

4. 本地测试免密登录

Terminal window
ssh difei@192.168.191.62

无需输入密码,直接连接成功即为配置完成。


5. 排错要点

序号要点
1使用 ssh -v difei@192.168.191.62 查看密钥握手详情
2管理员账号不能只用用户目录下的 authorized_keys
3权限必须收紧,不能有 Everyone / Authenticated Users 权限
4配置完毕后务必重启 sshd 服务
5确认防火墙已放行 22 端口

原因 1:sshd_config 禁用了公钥登录(最常见)

去远程 Windows,打开:

C:\ProgramData\ssh\sshd_config

检查以下关键配置(确保未被注释且值正确):

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

如果存在以下情况,会直接导致公钥登录失败:

  • PubkeyAuthentication no
  • AuthorizedKeysFile 被改为错误路径 ❌

修改后重启服务使配置生效:

Terminal window
Restart-Service sshd