De manera más general, si recibe este error, debe sshing tratar con los parámetros exactos que paramiko está tratando de usar:
- nombre de host
- usuario
- método de autenticación
Descubrí que tener demasiadas claves SSH causaba algunas (pero no todas) de mis conexiones SSH de tela a fallar, porque todas las claves se ofrecían al host remoto. En el pasado, las claves mal formadas también han elevado este mensaje de error (puede detectarlas quitando las claves de ~/.ssh/
, una a la vez).
Desafortunadamente, Fabric no respeta la configuración de .ssh/config. Si desea depurar esto, se puede ejecutar el siguiente:
#!/usr/bin/env python
import paramiko
paramiko.util.log_to_file("/tmp/paramiko.log")
ssh = paramiko.SSHClient()
# Run this if you get host key errors: see later
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect("example.com", username="myuser", password="mypassword")
y comprobar la salida en /tmp/paramiko.log
- se puede ver algo como:
INF [20120904-16:58:52.155] thr=1 paramiko.transport: Disconnect (code 2): Too many authentication failures for myuser
Puede set no_keys on the Fabric env environment:
env.no_keys = True
Pero luego tendrá que decirle a Fabric que use claves específicas para hosts específicos. Como se sugirió anteriormente, se puede hacer eso en su fabfile con:
from fabric.api import env
env.key_filename = "/path/to/.ssh/ssk_non_public_key"
más general here's a function to parse your .ssh config and pull out selective keys - en este claves, la clave SSH para su uso. Para que esto funcione de forma automática, tendrá que añadir a IdentityFile ~/.ssh/config
:
Host example.com
IdentityFile /home/jp/.ssh/id_rsa_example
Otra causa de la falla podría ser que paramiko does not recognize all host key types. Esto es algo más problemático: paramiko ignora silenciosamente la clave de host en ~/.ssh/known_hosts
, porque no es un formato de clave de host que comprenda. Trate de ssh-ción con -v y ver lo que dice la línea SSH encuentra una coincidencia clave de host para:
debug1: Host '1.2.3.4' is known and matches the RSA host key.
debug1: Found key in /home/jp/.ssh/known_hosts:105
puedes intentar borrar esta línea, a continuación, haciendo ssh de nuevo y aceptar el (nuevo?) Clave de host, y ver si paramiko es feliz entonces. Si ese es el problema, sin embargo, y eso no lo resuelve, entonces no hay una solución clara que yo pueda ver.
Algo raro sucede con su sesión ssh. ¿Qué sistema operativo está ejecutando el servidor? Pruebe 'ssh -o" PreferredAuthentications = password "' y vea si le niega el acceso. – JimB
Esto acaba de comenzar a funcionar. No cambié nada de lo que podía recordar aparte de detener las máquinas virtuales y reiniciarlas, pero pensé que ya había hecho eso antes ... De todos modos, gracias a todos por las ideas. – verbatim