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

标签 python ssh cygwin paramiko openssh

我有一个设置,我想通过使用私钥/公钥的无密码 SSH 从 Windows7 虚拟机连接到 Linux 服务器。

SSH 连接通过 Cygwin 终端工作正常。

使用 Paramiko,如果我接受缺少的主机 key ,我可以从客户端连接到我的主机,但如果我尝试使用 known_hosts相反,我收到错误:

Server XXX not found in known_hosts.

Paramiko 是否能够阅读 known_hosts Windows/Cygwin 中的文件?我可以以某种方式提供路径吗?

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

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

最佳答案

我假设您正在使用 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>\.ssh 创建目录连接至C:\cygwin64\home\<user>\.ssh (可能是最便携的解决方案);
  • 或明确指定filename调用 SSHClient.load_system_host_keys 时的参数(不可携带);
  • 或设置 HOME环境变量指向C:\cygwin64\home\<user>在运行 Python 脚本之前 - os.path.expanduser更喜欢HOMEUSERPROFILE - Windows 不使用HOME (可以破坏其他东西)。

关于python - Windows 上使用 Cygwin OpenSSH 的 Paramiko 找不到known_hosts 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53081374/

相关文章:

c++ - 无法在eclipse+cygwin+cdt上运行C/C++项目

CMAKE 未定义 CYGWIN 变量

Python3 日期和时间格式化

docker - 如何使用 ssh 在本地连接到 VSCode 容器?

c++ - 缺少库 arc4random 导致的构建错误

python - 访问在远程服务器上运行的 Ipython Notebook

linux - 在 SSH 命令中使用 su -c 反引号而不在其中运行命令

python - 如何从 python 脚本执行 7zip 命令

python - 无法将形状 (3,1) 中的输入数组广播到形状 (3,)

javascript - django - 使用带有一些动态元素的通用 header