Windows 上的无密码 psexec

Windows 上的无密码 psexec

我目前正在查看部署选项。我在 Windows 机器上使用 Jenkins 来控制到多个远程 Windows 服务器的部署。

部署涉及在远程 Windows 服务器上执行批处理脚本,到目前为止,psexec 似乎可以解决问题。我遇到的一个问题是,我需要以纯文本形式向 psexec 提供我的密码。

有谁知道 psexec 的 SSH 公钥/私钥的等效物,或者 Windows 的其他无密码远程登录,可以让我同步文件和执行批处理脚本?

答案1

我不知道有什么真正类似于 Windows 的基于 SSH 密钥的身份验证的东西。但这里有一些想法:

这里,我发现如果您首先连接到远程主机的 ipc$ 共享,然后运行 ​​psexec,那么 psexec 将自动在 ipc$ 连接的上下文中运行。

因此在您的批处理文件中:

net use \\myserver\IPC$ /user:MyID MyPassword
psexec \\myserver c:\whatever.cmd

这将阻止您的用户名/密码以明文形式通过网络发送。但是,它会使您的用户名/密码在批处理文件中可见。

解决这个问题的一种方法是编写一个可执行程序,其唯一功能是运行“net use \[命令行参数]\IPC$ /user:MyID MyPassword”。(我个人会使用类似 autoit 的程序来编写 .exe。)假设我们将其命名为“nu.exe”。那么您的秘密用户名/密码至少嵌入在“nu.exe”中,因此不是明文。虽然可能可以通过以下方式进行逆向工程反编译,至少在某种程度上是模糊的。

那么你的流程是:

nu.exe myserver
psexec \\myserver c:\whatever.cmd

但是您需要将 nu.exe 保存在安全的地方,因为任何有权访问它的人都可以使用您嵌入到 nu.exe 中的任何 ID 在远程主机上执行程序。

因此,这两个选项都有缺点,但也许其中一个适合您......

答案2

行政助理使用 -p@ 和 -p@d 参数有一个更好的解决方案。

它允许您将密码写入文件,运行 PAExec,它会立即读取文件然后将其删除。它仍然不如使用公钥/私钥的 SSH 好,但是一种选择……

相关内容