我正在调用调用cmd
的{{1}}文件来与Linux机器进行互通。我使用.NET ssh
类来完成此任务。但是在Windows服务调用中调用失败时出现以下错误:
Process
当我将应用程序作为控制台应用程序启动时,一切正常。
这种失败可能是什么原因以及如何解决这个问题?
编辑所有Windows服务都必须这样做 - 以某种方式杀死Linux机器上的预定义守护进程
由于
修改
那里描述的类似问题:http://www.velocityreviews.com/forums/t714254-executing-commands-from-windows-service.html
答案 0 :(得分:6)
也许这篇文章可以节省一些时间来解决类似的问题。我终于找到了对我有用的解决方案。它是ssh -n
密钥
所以而不是
ssh -o StrictHostKeyChecking=no -i private_linux_key user@host "ls"
我用过
ssh -n -o StrictHostKeyChecking=no -i private_linux_key user@host "ls"
它仍然看起来像一个魔术,但它的确有效!
答案 1 :(得分:0)
这不是访问凭据的问题吗?
当您将程序作为控制台应用程序运行时,您正在使用当前登录用户的访问权限。但是,Windows服务在特殊用户帐户(通常为“SYSTEM”)中执行,因此未授予相同的访问权限。