iis Python脚本在连接到远程服务器时忽略known_hosts文件

2o7dmzc5  于 9个月前  发布在  Python
关注(0)|答案(1)|浏览(55)

设置:一个Windows服务器,使用fastCGI作为服务用户执行php脚本(我已经通过执行exec(“whoami”,...)验证了这一点)。他们使用exec启动python脚本(也是作为服务用户运行的,我已经使用os.getlogin()验证了这一点),并将返回值作为其例程的一部分进行处理。

如果我模拟服务用户(以服务用户的身份打开命令行,并通过ssh连接到远程服务器,它可以正常工作,我得到了我想要的响应。运行脚本也是一样,它们以代码0终止,并给予预期的输出,而不是提示我确认指纹,也就是说它们处理known_hosts文件)
如果脚本是由php运行的,我会得到未知的指纹提示,这会导致FastCGI超时。如果我试图通过管道将yes传递给它(echo yes | python script.py),它会以一个意外的错误终止,所以这并不能解决问题,除了如果它工作的话会带来安全风险之外。
我的问题是:当通过FastCGI以服务用户身份运行时,脚本忽略known_hosts文件,而当通过cmd手动运行时,脚本不忽略known_hosts文件的原因可能是什么。(以及如何解决它)我会很感激任何输入,提前感谢!
旁注:我有一个测试服务器,我有一个类似的问题。系统提示我确认指纹,但我可以通过手动运行一次脚本并确认指纹提示来解决这个问题,因为它是从known_hosts文件中读取的。我已经多次检查了两个服务器的文件和文件权限,它们似乎是相同的(至少我不能发现任何差异)。

7kjnsjlb

7kjnsjlb1#

好吧,有趣的问题:
IIS应用程序池用户实际上是服务用户,但%USERPROFILE%已更改,在一台服务器上为C:\Users[username],在另一台服务器上为C:\Windows\System32\System\systemprofile。(我不知道为什么)
因此,我在这里选择的修复方法是简单地将.ssh\known_hosts复制到systemprofile文件夹中,并授予服务用户对该文件的只读权限。这样做后,它不再提示指纹验证,因为它现在在known_hosts文件中有指纹并连接。
大家的建议!

相关问题