Paramiko в Windows с Cygwin OpenSSH не находит файлы known_hosts - PullRequest
0 голосов
/ 31 октября 2018

У меня есть установка, в которой я хочу подключиться с виртуальной машины Windows7 к серверу Linux через SSH без пароля с закрытыми / открытыми ключами.

Соединение SSH работает нормально через терминал Cygwin.

С Paramiko я могу подключиться с моего клиента к своему хосту, если я принимаю отсутствующие ключи хоста, но если я пытаюсь использовать known_hosts вместо этого, я получаю ошибку:

Сервер XXX не найден в known_hosts.

Может ли Paramiko прочитать файл known_hosts в Windows / Cygwin? Можно ли как-то указать путь?

Моя папка .ssh находится в папке C:\cygwin64\home\<user>\.ssh.

Большое спасибо за помощь,
Thomas

1 Ответ

0 голосов
/ 31 октября 2018

Я полагаю, вы используете 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 предпочитает от HOME до USERPROFILE - и Windows не использует HOME (может сломать другие вещи).
...