我有 PHP 应用程序来在我们的 Windows Active Directory 中创建用户帐户。此应用程序在 Apache 和 Debian 11 上运行。我只有 LDAP(因为某些应用程序不支持 LDAPS),所以我无法直接从 PHP 设置密码。我正尝试通过 ssh 使用 powershell 来实现这一点。我在 linux 和域控制器上都安装了最新版本 7.2。在 DC 上,我添加了 OpenSSH 服务器并关闭了防火墙。我已将 linux 计算机添加到 DC 上的 trustHosts。
我能够通过 Putty 从远程计算机连接到 DC,并且运行顺利。当我使用[电子邮件保护]从 Linux 服务器,它也运行良好,但是当我从 Linux 服务器运行类似这样的程序时
Invoke-Command -ComputerName 192.168.2.11 -Credential $creds -Authentication Negotiate -ScriptBlock {Get-Process}
其中 $creds 包含类似 domain\lastname.firstname 的内容(也尝试过[电子邮件保护]) 和密码,执行此命令需要 2 到 5 分钟。当我尝试 Enter-PSSession 并连接到 DC 时,每个命令都需要几分钟才能执行,例如,如果我运行 Get-Date,则需要另外 2-5 分钟才能执行。即使我只是按 Enter 而不输入命令,我也可以在 2-5 分钟后继续使用终端。
我已经在 Debian9、Debian11、Windows Server 2019 和 2022 上尝试过。
答案1
我已经解决了。完全没有问题,至少对于我想要完成的任务来说没有问题。我使用 putty 连接到 Linux VM,然后从那里尝试运行这些 Powershell 远程命令来连接到 DC,正如我所描述的那样,它非常慢,但是当我使用 ssh 命令(在 powershell 之外)连接到 Windows 服务器时,一切都运行良好,只有 powershell 命令很慢。
当我使用 VirtualBox 控制台而不是 putty(ssh) 连接到此 Linux VM 时,一切都运行顺利。我需要从 PHP 运行 powershell,因此不需要先通过 ssh 连接,我只是用它来测试,花了我两天的时间。我完全同意这个解决方案。希望这对某人有帮助。