[玩转系统] 在 Windows 上配置 SSH 公钥身份验证
作者:精品下载站 日期:2024-12-14 23:26:26 浏览:14 分类:玩电脑
在 Windows 上配置 SSH 公钥身份验证
在本文中,我们将展示如何使用 RSA 或 EdDSA 密钥在 Windows 中配置 SSH 身份验证。让我们看看如何在 Windows 上生成公钥和私钥对,并在 Windows 10/11 或 Windows Server 2019/2022 上配置 OpenSSH 服务器以进行基于密钥的身份验证(无需密码)。
基于 SSH 密钥的身份验证在 Linux 世界中广泛使用,但在 Windows 中它最近才出现。这个想法是,客户端的公钥被添加到 SSH 服务器,当客户端尝试连接它时,服务器检查客户端是否拥有相应的私钥。这样,远程用户无需输入密码即可在 Windows 中进行身份验证。
在 Windows 上生成 SSH 密钥对
您必须在客户端计算机上生成两个 SSH 密钥(公钥和私钥),用于连接到运行 OpenSSH 的远程 Windows 主机。私钥存储在客户端(请妥善保管密钥,不要与任何人共享!),公钥添加到 SSH 服务器上的 authorized_keys 文件中。要在 Windows 客户端上生成 RSA 密钥,您必须安装 OpenSSH 客户端。
在 Windows 10/11 和 Windows Server 2019/2022 上,OpenSSH 客户端使用 PowerShell 作为可选 Windows 功能安装:
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
在以前的 Windows 版本上,您可以从 GitHub 安装 Win32-OpenSSH 端口(请参阅有关在 Windows 上设置 SFTP (SSH FTP) 服务器的文章中的示例)。
打开标准(非提升的)PowerShell 会话并使用以下命令生成一对 ED25519 密钥:
ssh-keygen -t ed25519
默认情况下,ssh-keygen 工具生成 RSA 2048 密钥。目前,建议使用 ED25519 代替 RSA 密钥。
系统将提示您提供密码以保护私钥。如果指定密码,则每次使用此密钥进行 SSH 身份验证时都必须输入该密码。我没有输入密码(不推荐)。
Generating public/private ed25519 key pair.
Enter file in which to save the key (C:\Users\myuser/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in C:\Users\myuser/.ssh/id_ed25519.
Your public key has been saved in C:\Users\myuser/.ssh/id_ed25519.pub.
The key fingerprint is: SHA256:xxxxxxxx myuser@computername
The key's randomart image is:
+--[ED25519 256]--+
+----[SHA256]-----+
ssh-keygen 将在当前 Windows 用户的配置文件中创建 .ssh 目录(
%USERPROFILE%\.ssh
)并生成2个文件:
id_ed25519
- 私钥(如果您生成了 RSA 密钥,该文件将被命名为
id_rsa
)
id_ed25519.pub
- 公钥(类似的 RSA 密钥称为
id_rsa.pub
生成SSH密钥后,您可以将您的私钥添加到SSH Agent服务中,这样您可以方便地管理私钥并使用私钥进行身份验证。
SSH代理服务可以存储您的私钥并在当前用户的安全上下文中提供它们。运行 ssh-agent 服务并使用 PowerShell 服务管理命令将其配置为自动启动:
set-service ssh-agent StartupType ‘Automatic’
Start-Service ssh-agent
将您的私钥添加到 ssh-agent 数据库:
ssh-add "C:\Users\youruser\.ssh\id_ed25519"
Identity added: C:\Users\youruser\.ssh\id_ed25519 (youruser@computername)
或者如下:
ssh-add.exe $ENV:UserProfile\.ssh\id_rsa
OpenSSH:在 Windows 上使用公钥配置基于密钥的身份验证
现在您需要将 SSH 公钥复制到 SSH 服务器。本示例中的 SSH 服务器是安装并配置了 OpenSSH 服务的远程 Windows 11 计算机。
您可以查看完整指南“如何在 Windows 上配置 OpenSSH 服务器? ”。
将 id_ed25519.pub 文件复制到您将用于连接到 SSH 服务器的用户配置文件中的 .ssh 目录。例如,我的远程 Windows 11 设备上有一个 user1 帐户,因此我需要将密钥复制到 C:\Users\user1\.ssh uthorized_keys。
您可以使用 SCP 将公钥从客户端复制到 SSH 服务器:
scp C:\Users\youruser\.ssh\id_rsa.pub [email protected]:c:\users\admin\.ssh\authorized_keys
您可以将多个公钥添加到单个authorized_keys 文件中。
Windows 上的 OpenSSH 服务器默认禁用公钥身份验证。您可以在 sshd_config 中检查这一点。获取 OpenSSH 中允许的身份验证方法列表的最简单方法是使用以下 PowerShell 命令(Select-String 类似于 PowerShell 中的 grep):
cat "C:\ProgramData\ssh\sshd_config"| Select-String "Authentication"
#PubkeyAuthentication yes
#HostbasedAuthentication no
#HostbasedAuthentication
PasswordAuthentication yes
#GSSAPIAuthentication no
在此示例中,PubkeyAuthentication 行被注释掉,这意味着此身份验证方法已禁用。使用记事本打开 sshd_config 文件并取消注释该行:
Notepad C:\ProgramData\ssh\sshd_config
PubkeyAuthentication yes
此外,您还必须禁用 sshd_config 配置文件中的 StrictModes 选项。默认情况下,此模式处于启用状态,并且如果私钥和公钥未得到适当保护,则会阻止基于 SSH 密钥的身份验证。取消注释该行
#StrictModes yes
并将其更改为
StrictModes no
要使用本机 SSH 客户端连接到远程主机,请使用以下命令:
ssh (username)@(SSH server name or IP address)
例如:
ssh [email protected]
这意味着您想要连接到 user1 帐户下 IP 地址为 192.168.1.15 的远程 SSH 服务器。 SSH 代理服务将自动尝试使用您的私钥在远程主机上进行身份验证。
如果您不想使用 ssh-agent 服务来管理 SSH 密钥,可以指定用于 SSH 身份验证的私钥文件的路径:
ssh [email protected] -i "C:\Users\youuser\.ssh\id_ed25519"
要使用 Active Directory 域中的用户帐户连接 SSH 主机,请使用以下格式:
ssh [email protected]@192.168.1.15 -i <private_key_absolute_path>
首次连接时,需要将SSH服务器密钥的指纹添加到信任列表中。输入 yes -> Enter。
The authenticity of host '192.168.1.15 (192.168.1.15)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Windows OpenSSH 中使用 ETW 日志记录来存储 SSH 日志而不是纯文本文件。您可以在 Windows 事件查看器中检查基于 SSH 密钥的身份验证日志(应用程序和服务日志 -> OpenSSH -> 操作)。
如果使用私钥的 SSH 连接成功,OpenSSH 日志中将出现以下事件:
EventID 4
sshd: Accepted publickey for locadm from 192.168.15.20 port 55772 ssh2: ED25519 SHA256:xxxxxxx
如果您无法使用私钥连接到 SSH 服务器,并且系统仍然提示您输入密码,则您尝试连接的用户帐户可能是本地 Windows 管理员组的成员(组 SID 为
S-1-5-32-544
)。我们稍后再讨论。
在管理用户下使用 SSH 密钥登录 Windows
OpenSSH 对 Windows 上的管理员用户帐户使用特殊的基于密钥的身份验证设置。
您需要使用 C:\ProgramData\ssh\administrators_authorized_keys 文件而不是用户配置文件中的 authorized_keys 密钥。将您的公共 SSH 密钥添加到此文本文件中(出于安全原因,只有管理员组和系统组应有权读取此文件)。
您可以使用以下命令更改文件的 NTFS 权限:
icacls 工具:
icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"
或使用 Get-Acl 和 Set-Acl PowerShell cmdlet:
get-acl "$env:programdata\ssh\ssh_host_rsa_key" | set-acl "$env:programdata\ssh\administrators_authorized_keys"
此后,即使禁用 StrictModes,SSH 密钥身份验证也会起作用。
为了使用用户配置文件中的authorized_keys文件而不是将公钥信息移动到administrators_authorized_keys文件中,您可以注释掉OpenSSH配置文件(C:\ProgramData\ssh\sshd_config)中的一行。
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
此外,您可以在 sshd_config 中禁用 SSH 密码登录:
PasswordAuthentication no
在 sshd_config 中进行更改后,不要忘记重新启动 sshd 服务。
restart-service sshd
如果你设置了PasswordAuthentication no,并且配置了不正确的SSH密钥认证,那么通过ssh连接时会出现错误:
[email protected]: Permission denied (publickey,keyboard-interactive).
您可以使用 Linux 上 OpenSSH 中的 PermitRootLogin 选项来限制 SSH root 登录。该指令不适用于 Windows OpenSSH,您必须使用 DenyGroups 参数拒绝管理员帐户下的 ssh 登录:
DenyGroups Administrators
因此,您已经使用密钥对在 Windows 中配置了 SSH 身份验证。现在,您可以使用此身份验证方法安全地访问远程服务器、自动转发 SSH 隧道中的端口、运行脚本以及执行其他自动化任务。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[短剧合集] 2025年06月2日 精选+付费短剧推荐39部
[软件合集] 25年6月2日 精选软件18个
[软件合集] 25年6月1日 精选软件15个
[短剧合集] 2025年06月1日 精选+付费短剧推荐59部
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[美图] 2W美女个美女小姐姐,饱眼福
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag