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