Подтвердить что ты не робот

Paramiko no существующее исключение сеанса

Используя интерактивную оболочку python и opensh, выполняемую локально, я продолжаю получать исключение "No existing session" с использованием paramiko. Мой код ниже.

import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('localhost',username=name,password=pw)

Результаты в:

No handlers could be found for logger "paramiko.transport"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.6/dist-packages/paramiko-1.7.7.1-py2.6.egg/paramiko/client.py", line 332, in connect
    self._auth(username, password, pkey, key_filenames, allow_agent, look_for_keys)
  File "/usr/local/lib/python2.6/dist-packages/paramiko-1.7.7.1-py2.6.egg/paramiko/client.py", line 493, in _auth
    raise saved_exception
paramiko.SSHException: No existing session

Я смог подключиться ранее, но пытался настроить это, чтобы разрешить авторизацию на основе ключа. Это не удалось, и с тех пор я не смог подключиться локально. Я попытался перезапустить openssh и успешно подключиться к другому серверу. После поиска здесь все, что я нашел, - это упоминания об исключениях авторизации, которые здесь не выглядят.

4b9b3361

Ответ 1

Поскольку у вас уже есть пароль, вам не нужно разговаривать с агентом или искать секретные ключи, хранящиеся на вашем компьютере. Поэтому попробуйте передать дополнительные параметры allow_agent, look_for_keys:

ssh.connect('localhost',username=name,password=pw,allow_agent=False,look_for_keys=False)

Ответ 2

У меня был открытый ключ с ключевой фразой в моем списке ssh-add. Как только я удалил его, я смог правильно выполнить свой w370 > на основе paramiko.

В список:

ssh-add -l

Чтобы удалить все:

ssh-add -D

Чтобы добавить:

ssh-add /FULL/PATH/TO/id_rsa

Ответ 3

https://bugs.launchpad.net/paramiko/+bug/912123

Какую ОС вы используете? Возможно, вы можете проверить свою переменную env: SSH_AUTH_SOCK

для "connect", он попытается использовать агент ssh. в agent.py

 self.conn = None
 self.keys = ()
 if ('SSH_AUTH_SOCK' in os.environ) and (sys.platform != 'win32'):
     conn = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
     try:
         conn.connect(os.environ['SSH_AUTH_SOCK'])
     except:
     # probably a dangling env var: the ssh agent is gone
         return
         self.conn = conn
 elif sys.platform == 'win32':
     import win_pageant
     if win_pageant.can_talk_to_agent():
         self.conn = win_pageant.PageantConnection()
 else:
     return

Ответ 4

Замените 'localhost' на '127.0.0.1'.