使用Cygwin OpenSSH的Windows上的Paramiko找不到known_hosts文件

时间:2018-10-31 10:37:36

标签: python ssh cygwin paramiko openssh

我有一个设置,我想在其中通过带有私钥/公钥的无密码SSH从Windows7 VM连接到Linux服务器。

SSH可以通过Cygwin终端正常工作。

使用Paramiko,如果我接受丢失的主机密钥,则可以从客户端连接到主机,但是如果尝试使用known_hosts,则会收到错误消息:

  

在known_hosts中找不到服务器XXX。

Paramiko完全能够读取Windows / Cygwin中的known_hosts文件吗?我能以某种方式提供路径吗?

我的.ssh文件夹位于C:\cygwin64\home\<user>\.ssh下。

非常感谢您的帮助,
托马斯

1 个答案:

答案 0 :(得分:0)

我假设您正在使用SSHClient.load_system_host_keys

默认情况下,这些方法会加载os.path.expanduser('~/.ssh/known_hosts')文件。与您的C:\cygwin64\home\<user>\.ssh位置不匹配的地方,例如在Windows os.path.expanduser上使用USERPROFILE环境变量,该变量指向C:\Users\<user>


您可以通过以下方式解决此问题:

  • 以某种方式更改您的Cygwin配置(但这可能会破坏其他内容);
  • 或创建从C:\Users\<user>\.sshC:\cygwin64\home\<user>\.ssh的目录连接(可能是最方便的解决方案);
  • 或在对filename的调用中明确指定SSHClient.load_system_host_keys自变量(不可移植);
  • 或将HOME环境变量设置为指向C:\cygwin64\home\<user>,然后再运行Python脚本-os.path.expanduser首选HOME胜于USERPROFILE-Windows不使用{ {1}}(可能会破坏其他东西)。