在Windows上生成SSH(RSA)

您必须在用于连接到运行OpenSSH的远程Windows服务器的客户端计算机上生成两个RSA密钥(公共密钥和私有密钥)。私钥存储在客户端(请勿将其传递给任何人!),并且公钥被添加到SSH服务器上的authorized_keys文件中。要在Windows客户端上生成RSA密钥,必须安装OpenSSH客户端。

在Windows 10 1809(及更高版本)和Windows Server 2019中,OpenSSH客户端作为单独的功能安装:

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

在以前的Windows版本中,您可以从GitHub 安装Win32-OpenSSH端口(请参阅有关在Windows上设置SFTP(SSH FTP)服务器的文章中的示例)。
运行标准(非特权)PowerShell会话,并使用以下命令生成一对RSA 2048密钥:

ssh-keygen

系统将提示您输入密码以保护私钥。如果指定密码,则每次使用此密钥进行SSH身份验证时都必须输入密码。我没有输入任何密码(不推荐)。

Windows上内置的ssh-keygen工具-生成rsa密钥

ssh-keygen将在当前Windows用户(C:\ Users \ your_username)的配置文件中创建.ssh目录,并在其中放置2个文件:

id_rsa –私钥
id_rsa.pub –公钥
创建RSA密钥后,可以将私钥添加到SSH代理服务,该服务可以方便地管理私钥并将其用于身份验证。SSH代理存储私钥,并在当前用户的安全上下文中提供私钥。运行ssh-agent服务,并使用PowerShell服务管理命令将其配置为自动启动:

set-service ssh-agent StartupType ‘Automatic’
Start-Service ssh-agent

将私钥添加到ssh-agent数据库:

ssh-add “C:\Users\youruser\.ssh\id_rsa”

或如下:

ssh-add.exe $ENV:UserProfile\.ssh\id_rsa

在Windows上配置OpenSSH服务器以使用SSH密钥进行身份验证
然后将在客户端上生成的公钥复制到SSH服务器(在此示例中,这是运行Windows 10 1903并配置了OpenSSH的远程计算机)。

我们已经详细讨论了如何在Windows中配置OpenSSH服务器。
将id_rsa.pub文件复制到。用来连接SSH服务器的用户配置文件中的ssh目录。例如,我在Windows 10中有一个admin 用户,因此必须将密钥复制到C:\ Users \ admin \ .ssh \ authorized_keys。

Windows用户的配置文件文件夹中的ssh \ authorized_keys文件

您可以使用SCP将公钥复制到SSH服务器:

scp C:\Users\youruser\.ssh\id_rsa.pub admin@192.168.1.15:c:\users\admin\.ssh\authorized_keys

现在,您无需密码即可连接到Windows SSH服务器。如果尚未设置私钥的密码(密码),则将自动连接到远程Windows主机。

要使用SSH连接到远程主机,您将需要以下命令:

ssh (username)@(SSH server name or IP address)

例如:

ssh admin@192.168.1.15

这意味着您要使用管理员帐户连接到IP地址为192.168.1.15的远程SSH服务器。SSH代理将自动尝试使用之前保存的私钥进行身份验证。

如果您不想使用ssh-agent服务来管理SSH密钥,则可以指定用于SSH身份验证的私钥文件的路径:
ssh admin@192.168.1.15 -i “C:\Users\youruser\.ssh\id_rsa”

如果您无法使用RSA密钥连接到SSH服务器,并且仍然提示您输入密码,则您尝试连接的用户帐户可能是本地服务器管理员组(组SID)的成员是S-1-5-32-544)。我们将在后面讨论。

通过ssh使用私钥访问Windows(无密码)

如何在本地管理员下使用SSH密钥登录Windows?
OpenSSH为具有Windows本地管理员特权的用户使用特殊的基于密钥的访问设置。

首先,使用密钥文件C:\ ProgramData \ ssh \ administrators_authorized_key代替用户配置文件中的authorized_keys文件。您必须将SSH密钥添加到此文本文件(出于安全目的,只有Administrators组和SYSTEM才有权读取此文件)。

为了从用户配置文件中使用authorized_keys文件,而不是将公用密钥数据移动到administrators_authorized_keys文件,您可以在OpenSSH配置文件(C:\ ProgramData \ ssh \ sshd_config)中注释相关行。

评论这些行:
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

sshd_config AuthorizedKeysFile __PROGRAMDATA __ / ssh / administrators_authorized_keys

允许使用sshd_config文件中的RSA密钥访问Windows:

PubkeyAuthentication yes

并禁用ssh密码登录:

PasswordAuthentication no

将更改保存到sshd_config后,不要忘记重新启动sshd服务。

restart-service sshd

这是另一件事。在早期的OpenSSH版本中,您必须授予NT Service \ sshd对authorized_keys文件的读取权限。

为此,您必须执行以下任一操作:

安装OpenSSHUtils模块:Install-Module -Force OpenSSHUtils -Scope AllUsers。要更改文件许可权,请运行以下命令:Repair-AuthorizedKeyPermission -FilePath C:\Users\admin\.ssh\authorized_keys Windows openssh服务器上的修复授权密钥权限
使用NTFSSecurity模块或icacls更改文件的NTFS权限;
或者,您可以在sshd_config文件中禁用StrictModes。默认情况下,如果公钥和私钥没有得到很好的保护,则启用此模式并阻止基于密钥的身份验证。取消注释该行#StrictModes yes,并将其更改为StrictModes no。sshd-config-禁用严格模式
因此,您已经在Windows上使用公共RSA密钥(证书)配置了SSH身份验证。现在,您可以使用此身份验证方法安全地访问远程服务器,自动转发SSH隧道中的端口,运行脚本并执行任何其他与自动化相关的任务。

未经允许不得转载:98资源窝 » 在Windows上生成SSH(RSA)

赞 (1)

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址