Принудительная аутентификация по паролю (игнорирование ключей в папке .ssh) в Paramiko в Python - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь написать небольшую программу на 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()

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

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

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

Спасибо

1 Ответ

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

Метод 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 "Неизвестный сервер" .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...