Использование файла ssh_config с Paramiko - PullRequest
1 голос
/ 04 июня 2019

Мне нужно подключиться к серверу с SSH для загрузки файлов. У меня Ubuntu, и я настроил SSH стандартным способом: у меня есть файл ssh_config в .ssh, который определяет запись хоста (скажем, host_key) для адреса сервера (Hostname.com) и имени пользователя, и Я настроил ключ RSA. Поэтому, когда я пытаюсь войти в SSH из командной строки или bash, мне просто нужно использовать ssh host_key

Я бы хотел сделать это на Python. Стандартные решения, похоже, заключаются в использовании Paramiko для настройки соединения. Я попробовал это:

from paramiko import SSHClient
from scp import SCPClient

ssh = SSHClient()
ssh.load_system_host_keys()
ssh.connect('host_key')

scp = SCPClient(ssh.get_transport())
# etc...

Однако, кажется, что оно всегда зависает и время ожидания на ssh.connect('host_key'). Даже когда я пытаюсь включить имя пользователя и пароль: ssh.connect('host_key', username='usrnm', password='pswd').

Правильно ли загружаются ключи хоста? И будет ли это заботиться о ключах RSA?

Это работает, только если я использую весь Hostname.com с именем пользователя и напечатанным паролем. Что может быть немного небезопасно.

1 Ответ

1 голос
/ 04 июня 2019

Я не думаю, что обычно используется ssh_config файл с Paramiko (или любым другим кодом / языком).ssh_config - это файл конфигурации для инструментов OpenSSH, а не для SSH в целом.

Обычно вы указываете свой закрытый ключ непосредственно в коде в качестве аргумента метода SSHClient.connect:
Какчтобы получить доступ к удаленному серверу, используя Paramiko с файлом открытого ключа


Если вы хотите продолжать использовать ssh_config, Paramiko может его проанализировать.Проверьте функции parse_ssh_config и lookup_ssh_host_config.Но я полагаю, вам все равно придется искать файл ключа в конфиге и явно передавать его в метод SSHClient.connect.

...