«EOF в транспортном потоке» при реализации аутентификации «запрос-ответ» с помощью Python ParamikoPython

Программы на Python
Ответить
Anonymous
 «EOF в транспортном потоке» при реализации аутентификации «запрос-ответ» с помощью Python Paramiko

Сообщение Anonymous »

Мне нужно войти на сервер Linux, и в sshd_config он имеет следующую конфигурацию:

Код: Выделить всё

PasswordAuthentication yes
ChallengeResponseAuthentication yes
UsePAM yes
Когда я вхожу в систему через PuTTY, он сначала просит меня ввести пароль, а затем токен RSA из приложения аутентификации. Мне нужно сделать то же самое с помощью Python для некоторых задач автоматизации.
Вот мой код:
import paramiko, traceback
from getpass import getpass
paramiko.common.logging.basicConfig(level=paramiko.common.DEBUG)

hostname = '192.169.10.10'
port = 22
username = get_user_name()
password = keyring.get_password('unix',username) # This is my first password

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

try:
transport = paramiko.Transport((hostname, port))
try:
transport.connect(username=username, password=password)
except Exception as e:
print(e)

def challenge_handler(title, instructions, prompt_list):
responses = []
for prompt in prompt_list:
if "password" in prompt[0].lower():
responses.append(password)
elif "rsa" in prompt[0].lower() :
token = getpass(f"Enter {prompt[0].strip()}: ")
responses.append(token)
else:
responses.append(getpass(f"Enter {prompt[0].strip()}: "))
return responses

transport.auth_interactive(username, handler=challenge_handler) #problem starts
print("Authentication successful.")

session = transport.open_session(timeout=10) #Failed with EOF problem
if session.active:
print("Session opened successfully.")

session.exec_command('uname')

output = session.recv(1024).decode()
print("Command output:")
print(output)

error = session.recv_stderr(1024).decode()
if error:
print("Command errors:")
print(error)

session.close()
else:
print("Failed to open session.")

except Exception as e:
print(f"Error: {e}")
traceback.print_exc()
finally:
if 'ssh' in locals():
ssh.close()
print("Connection closed.")
< /code>
Я не мог понять, что случилось. Цените, если вы можете пролить некоторые огни. Если вы чувствуете, что я пропустил некоторую информацию, дайте мне знать. Информация: paramiko.transport: аутентификация (клавиатура Interactive)
успешно! Отладка: paramiko.transport: [chan 0] max packet в: 32768
bytes debug: paramiko.transport: eof в транспортной темпе < /strong> Я думаю, что
Вот где возникает проблема < /p>
< /blockquote>
Заранее спасибо < /p>

Подробнее здесь: https://stackoverflow.com/questions/793 ... ication-wi
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»