python примеры Парамико "Неизвестный сервер"




python ssh connect (4)

Я испытал ту же проблему, и вот решение, которое получилось для меня:

import paramiko

client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect('127.0.0.1', username=username, password=password)
stdin, stdout, stderr = client.exec_command('ls -l')

Это делается для установки политики для использования при подключении к серверу, который не имеет ключа хоста в системном или локальном объектах HostKeys. Политика по умолчанию - отклонить все неизвестные серверы (используя RejectPolicy). Вы можете заменить AutoAddPolicy или написать свой собственный класс политики.

Подробнее о paramiko api doc . Надеюсь это поможет.

Я пытаюсь начать работу с библиотекой Paramiko, но библиотека бросает исключение, как только я пытаюсь подключиться к следующей простой программе:

import paramiko
ssh = paramiko.SSHClient()
ssh.connect('127.0.0.1', username='boatzart', password='mypassword')

Ошибка, которую я получаю:

Traceback (most recent call last):
File "test.py", line 6, in <module>
ssh.connect('127.0.0.1')
File "build/bdist.macosx-10.7-intel/egg/paramiko/client.py", line 316, in connect
File "build/bdist.macosx-10.7-intel/egg/paramiko/client.py", line 85, in missing_host_key
paramiko.SSHException: Unknown server 127.0.0.1

Это происходит независимо от того, какой сервер я пытаюсь выполнить.


Я столкнулся с этой проблемой и хотел опубликовать обходной путь здесь. Проблема заключалась в том, что ssh-сервер отправлял ключи ecdsa, которые пока не поддерживаются с paramiko. В моей системе debian Wheezy я отключил ecdsa, прокомментировав одну строку в / etc / ssh / sshd_config:

# HostKey / etc / ssh / ssh_host_ecdsa_key

Перезапущен sshd, и он вернулся к использованию RSA. В моем файле known_hosts были некоторые ключи ecdsa, поэтому я просто удалил их для сброса и вошел в систему вручную, чтобы воссоздать ключи. Оттуда парамико работал отлично, как и ожидалось, с проверкой ключа хоста RSA.


Исключение было вызвано тем, что вам не хватает ключа хоста, скорее критический «Неизвестный сервер» - это ключ - поскольку исключение было поднято из missing_host_key

Попробуйте это вместо этого:

import paramiko

paramiko.util.log_to_file('ssh.log') # sets up logging

client = paramiko.SSHClient()
client.load_system_host_keys()
client.connect('127.0.0.1', username=username, password=password)
stdin, stdout, stderr = client.exec_command('ls -l')

У меня была эта ошибка: я могу подключиться из оболочки, но paramiko говорит «Неизвестный сервер workdevel114».

В known_hosts было две аналогичные записи:

[email protected]> grep workdevel114 ~/.ssh/known_hosts
workdevel114 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC8qGbuI1BaBodi7sKWLfV8Eh+De80Th7HFLD4WiJWo57THl0Q+QcopUaU3pF....
[email protected]> grep I1BaBodi7sKWLfV8Eh+De80Th7HFLD4WiJWo57THl0Q+QcopUaU3pF ~/.ssh/known_hosts
workdevel114 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC8qGbuI1BaBodi7sK...
|1|f/auQ9nY5dFbVtOdY3ocjtVO9dM=|esvazUDTT3VIcLk9DxmPI6FZt1s= ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC8qGbuI1BaBodi7sKWLfV8Eh+De80Th7HFLD4...

Запись секунд (| 1 | ....), похоже, путает paramiko. Я думаю, это связано с этим билетом: https://github.com/paramiko/paramiko/issues/67

Я решил это, добавив эту строку:

client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

Но это отключает проверку хоста протокола ssh в этом случае: Paramiko считает, что ключ хоста неизвестен, но он известен. Известный ключ игнорируется. Меня не волнует, потому что атаки «человек в середине» очень маловероятны в моей среде.

пара-версия: 1.7.7.1-1ubuntu1





paramiko