tutorial sshclient open_sftp invoke_shell example commands python ssh paramiko

sshclient - python ssh paramiko tutorial



paramiko ninguna excepción de sesión existente (4)

Como ya tiene una contraseña, no necesita hablar con el agente o buscar claves privadas almacenadas en su máquina. Así que intente pasar parámetros adicionales allow_agent , look_for_keys :

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

Al usar el shell interactivo de python y openssh ejecutándose localmente, sigo recibiendo una excepción de "No hay sesión existente" usando paramiko. Mi código está abajo.

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

Resultados en:

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

Pude conectarme anteriormente, pero intenté ajustar esto para permitir la autorización basada en claves. Eso falló, y desde entonces no he podido conectar localmente. He intentado reiniciar openssh y me he conectado a otro servidor con éxito. Después de buscar aquí, todo lo que he encontrado son menciones de excepciones de autorización, que no parece ser el caso aquí.


Reemplace ''localhost'' por ''127.0.0.1''.


Tenía una clave pública de repuesto con una frase clave en mi lista de ssh-add. Una vez que lo eliminé, pude ejecutar mi script basado en paramiko correctamente.

Listar:

ssh-add -l

Para borrar todo:

ssh-add -D

Para volver a agregar:

ssh-add /FULL/PATH/TO/id_rsa


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

¿Qué sistema operativo estás usando? Tal vez puedas verificar tu variable env: SSH_AUTH_SOCK

para "conectar", intentará usar el agente ssh. en 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