paramiko нет существующей сессии исключение - PullRequest
21 голосов
/ 26 июля 2011

Используя интерактивную оболочку python и openssh, работающие локально, я получаю исключение «Нет существующего сеанса» с использованием 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 и успешно подключился к другому серверу. После поиска здесь все, что я нашел, - это упоминания об исключениях авторизации, чего здесь не происходит.

Ответы [ 4 ]

31 голосов
/ 22 марта 2014

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

ssh.connect('localhost',username=name,password=pw,allow_agent=False,look_for_keys=False)
10 голосов
/ 05 октября 2012

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

К списку:

ssh-add -l

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

ssh-add -D

Для повторного добавления:

ssh-add /FULL/PATH/TO/id_rsa
2 голосов
/ 06 января 2012

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

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

для «подключения», он попытается использовать агент 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
0 голосов
/ 08 августа 2011

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

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