Python pexpect.pxssh.ExceptionPxssh: пароль отклонен

#python #pexpect #pxssh

#python #pexpect #pxssh

Вопрос:

Следующие учетные данные верны.

 wolf@linux:~$ sshpass -p bandit0 ssh bandit0@bandit.labs.overthewire.org -p 2220
This is a OverTheWire game server.
  

Однако это не сработало с Python pexpect.pxssh

 >>> from pexpect import pxssh
>>> s = pxssh.pxssh()
>>> hostname = 'bandit.labs.overthewire.org'
>>> username = 'bandit0'
>>> password = 'bandit0'
>>> port = '2220'
>>> s.login(hostname, username, password, port)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3/dist-packages/pexpect/pxssh.py", line 402, in login
    raise ExceptionPxssh('password refused')
pexpect.pxssh.ExceptionPxssh: password refused
>>> 
  

Комментарии:

1. Я подозреваю, что причиной проблемы являются заданные вами позиционные аргументы в login методе. Согласно документации к методу, попробуйте s.login(hostname, username, password, port=port) вместо этого и убедитесь, что это работает лучше.

2. Спасибо @HampusLarsson, это работает!. Продолжайте и ответьте на него

Ответ №1:

Ваша ошибка связана с позиционными аргументами, которые вы предоставляете методу pexpect.pxssh.pxssh.login .

Согласно документации, первые четыре позиционных аргумента метода являются:

 server, username=None, password='', terminal_type='ansi'
  

Поэтому, когда вы вызываете, s.login(hostname, username, password, port) вы устанавливаете terminal_type номер порта.

Если вы измените последний аргумент на аргумент ключевого слова вместо этого, порт будет установлен правильно:

 s.login(hostname, username, password, port=port)