linux - 在 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 记录。
解决方案
推荐阅读
- angular - 不能在 Angular 路由中使用枚举
- php - 从webview下载pdf,pdf以blob格式存储在mysql DB中
- javascript - 如何在反应可排序树中复制树节点(带子节点)并粘贴到树中的其他位置?
- sql - SQL - 计算课程部分的数量
- swift - 磁盘工具列表中使用了哪些 UI 元素
- javascript - 判断用户的浏览器是否支持 USDZ 或 Reality Composer 文件格式
- python - 如何修复 Python Whle Scraping 中的 If 语句
- python - 列表在通过其他文件中的 removeEven 函数后返回空
- flutter - 使用firestore和flutter从子集合中查询特定文档
- sql - 为应用程序使用的所有表提供唯一 ID 的最佳做法是什么?