Принудительная аутентификация по паролю (игнорирование ключей в папке .ssh) в Paramiko в Python

1

Я пытаюсь написать небольшую программу Python, чтобы проверить, разрешает ли SSH-сервер аутентификацию пароля. Вот текущий план:

import base64
import paramiko
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect('ssh.example.com', username='strongbad', password='thecheat')
stdin, stdout, stderr = client.exec_command('ls')
for line in stdout:
    print('... ' + line.strip('\n'))
client.close()

Идея состоит в том, чтобы grep вывести или позже поставить блок catch try вокруг оператора connect.

Моя проблема, однако, в том, что некоторые из систем, в которых я запускаю программу, имеют доступ через ключ RSA, который хранится в ~/.ssh. И в этих случаях соединение просто преуспеет (чего я хочу избежать).

Итак, вот вопрос: кто-нибудь знает, как заставить Paramiko (или другой клиент SSH) использовать пароли?

Спасибо

Теги:
python-3.x
ssh
paramiko

1 ответ

1
Лучший ответ

Метод SSHClient.connect имеет аргумент look_for_keys. Установите значение False:

client.connect('ssh.example.com', username='strongbad', password='thecheat', look_for_keys=False)

Аналогично, вы можете также установить allow_agent в False.


Обязательное предупреждение: не используйте AutoAddPolicy, если вы не заботитесь о безопасности. Таким образом вы теряете защиту от атак MITM.
Для правильного решения см. Paramiko "Неизвестный сервер".

  • 0
    Спасибо! Понятия не имею, почему я упустил этот вариант. И спасибо за предупреждение на AutoAddPolicy. В этом конкретном случае мне все равно, потому что я не подключаюсь вообще.
  • 0
    Плюс я не понимаю, как ваш код будет иметь смысл, если вы не подключитесь. И на самом деле, я считаю, что вам даже нужно пройти аутентификацию, чтобы действительно проверить аутентификацию по паролю. И особенно с AutoAddPolicy и аутентификацией по паролю, вы будете отправлять пароль прямо злоумышленнику.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню