在Windows上无密码的psexec

我正在寻找部署选项。 我在Windows机器上使用Jenkins来控制部署到多个远程Windows服务器。

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

任何人都知道与psexec的SSH公钥/私钥等效,或者一些其他无密码的Windows远程login,这将允许我同步文件和执行批处理脚本?

使用-p @和-p @ d参数, PAExec有一些更好的解决scheme。

它可以让您将密码写入文件,运行PAExec,并立即读取文件,然后将其删除。 它还不如公钥/私钥的SSH,但一个选项…

我不知道任何真正与Windows基于SSH密钥的身份validation类似的问题。 但是这里有一些想法:

从这里 ,我发现如果你先连接到远程主机的ipc $共享,然后运行psexec,psexec会自动运行在ipc $连接的上下文中。

所以在你的batch file中:

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

这将停止您的用户名/密码通过networking以明文方式发送。 但是,它确实会将您的用户名/密码留在您的batch file中。

解决这个问题的一种方法是编写一个只执行“net use \ [commandline argument] \ IPC $ / user:MyID MyPassword”的可执行程序。 (就个人而言,我会使用类似于autoit的东西来编写.exe)。假设我们将其命名为“nu.exe”。 那么你的秘密用户名/密码至lessembedded在“nu.exe”内,因此不是明文。 尽pipe可能通过反编译来进行反向工程,但是至less在某种程度上被混淆了。

那么你的过程是:

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

但是,您需要将nu.exe保存在一个安全的地方,因为任何有权访问它的人都可以在远程主机上执行程序,就像您在nu.exe中embedded的任何ID一样。

所以这两个选项都有缺点,但也许其中一个将为你工作…