首页 > 解决方案 > 在 Linux 上通过 OpenSSH 公钥身份验证使用 Powershell 更新 DNS

问题描述

我想从 Linux 服务器运行一些命令,以在 Windows 机器上远程执行 PowerShell 模块(如 DNSserver)来检索 DNS 信息。我正在使用 OpenSSH 从 Linux 到 SSH 到 Windows。

我在 Windows 服务器和 Linux 服务器上都有 PowerShell 6.2.3。我从 Linux 开始:

> pwsh 
PS /home/user1> Enter-PSSession -HostName WinServer-IP -UserName user2

如果我没有在 Windows 站点上设置密钥身份验证(在文件中添加公钥C:\ProgramData\ssh\administrators_authorized_keys,并在文件上设置正确的权限),PowerShell 会询问我 user2 密码。输入密码后,我在 Windows 服务器上,我可以运行我的 PowerShell 脚本,它们都工作正常。

但是,如果我设置密钥身份验证 - 在文件中添加公钥C:\ProgramData\ssh\administrators_authorized_keys,并在文件上设置正确的权限。PowerShell 不会询问 user2 密码,我得到与上面相同的提示,

我可以做类似的事情,Get-Module但是当我运行我的脚本时:

Get-DnsServerResourceRecord -ComputerName 'DNSServer-IP' -ZoneName 'example.net' -RRType A

我得到了错误:

Get-DnsServerResourceRecord : 无法获取区域信息
例子.net。在服务器 DNSServer-IP 上。
在 C:\Users\user2\scripts\retrieve_ips.ps1:1 char:1
+ 获取-DnsServerResourceRecord -ComputerName 'DNSServer-IP' -ZoneName 'ex ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : PermissionDenied: (example.net.:root/Microsoft/Wind\u2026erverResourceRecord) [Get-DnsServerResourceRecord], CimException
    + FullyQualifiedErrorId : WIN32 5,Get-DnsServerResourceRecord

似乎 SSH 公钥身份验证并没有真正让我成为“用户”,但我不知道它是什么。

user2 是 Windows 服务器上的本地用户,但我必须将其添加到 Active Directory,因为 AD 需要知道该用户才能允许 user2 运行 DNSserver 模块...

我做错了什么或错过了什么?

如果没有 SSH 公钥身份验证,相同的脚本可以工作,我可以获得 DNS 服务器的 A 记录。

标签: linuxpowershellpowershell-remotingopenssh

解决方案


推荐阅读