我有一个设置,我想在其中通过带有私钥/公钥的无密码SSH从Windows7 VM连接到Linux服务器。
SSH可以通过Cygwin终端正常工作。
使用Paramiko,如果我接受丢失的主机密钥,则可以从客户端连接到主机,但是如果尝试使用known_hosts
,则会收到错误消息:
在known_hosts中找不到服务器XXX。
Paramiko完全能够读取Windows / Cygwin中的known_hosts
文件吗?我能以某种方式提供路径吗?
我的.ssh
文件夹位于C:\cygwin64\home\<user>\.ssh
下。
非常感谢您的帮助,
托马斯
答案 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>
。
您可以通过以下方式解决此问题:
C:\Users\<user>\.ssh
到C:\cygwin64\home\<user>\.ssh
的目录连接(可能是最方便的解决方案); filename
的调用中明确指定SSHClient.load_system_host_keys
自变量(不可移植); HOME
环境变量设置为指向C:\cygwin64\home\<user>
,然后再运行Python脚本-os.path.expanduser
首选HOME
胜于USERPROFILE
-Windows不使用{ {1}}(可能会破坏其他东西)。