18 votos

Conectar a través de SSH y escriba la contraseña de forma automática, sin necesidad de utilizar una clave pública

Un servidor permite conexiones SSH, pero no el uso de la autenticación de clave pública. No está en mi poder para cambiar esto en el momento (debido a dificultades técnicas, no de la organización), pero voy a entrar en ella tan pronto como sea posible!

Lo que necesito ahora es ejecutar comandos en el servidor usando el viejo y simple de la cuenta+contraseña de autenticación de una secuencia de comandos. Es decir, necesito hacerlo en una no-forma interactiva. Es posible? Y ¿cómo lo hago?

El cliente que se van a ejecutar la secuencia de comandos se ejecuta Ubuntu Server 8.04. El servidor se ejecuta Cygwin y OpenSSH.

20voto

solefald Puntos 1793

Hay una utilidad para linux llamado sshpass. Esto te permite hacer exactamente lo que quiere y va a tomar una contraseña para el servidor, ya sea como un argumento de línea de comandos o desde un archivo (yo prefiero esta, así que no tengo mi contraseña del servidor se muestran en la concha de la historia) y usarlo así:

sshpass -f file_with_password ssh user@server ls -la

Esto ssh en un servidor y ejecute ls -la. Una cosa, sin embargo, usted tiene que manualmente ssh en un servidor primero (si no lo has hecho ya), por lo que el servidor se agrega a la ~/.ssh/known_hosts. Si no lo haces, sshpass no funcionará.

7voto

Mox Puntos 361

Usted puede utilizar Esperar para ello. Obviamente, esto no es preferible desde un punto de vista de seguridad, debido a que se requieren para utilizar una secuencia de comandos que contiene su contraseña en texto plano. (Pero no voy a insistir sobre ese punto ya dijo en su pregunta que usted planea usar la autenticación de clave pública tan pronto como sea posible!)

6voto

pehrs Puntos 6831

Depende un poco de la secuencia de comandos de lenguaje que se utiliza. Yo script casi todo en python ahora, donde esta es un no-problema. Ambos pyssh y Paramiko le permite simplemente secuencia de comandos de la contraseña, sin complicaciones.

Si usted tiene la intención de hacerlo con (ba)sh secuencias de comandos y el uso de OpenSSH se pone más difícil. OpenSSH explícitamente le impide poner contraseñas en la línea de comandos (como todos los usuarios pueden ver la línea de comando usando algo como ps -fe, lo que es malo mojo). En este caso tienes que interactuar directamente con el programa ssh y tiene dos opciones:

  • Usted puede escribir una cantidad considerable de código de soporte, el uso de algo como Esperaba.
  • Hacer un hack usando el SSH_ASKPASS variable, diciéndole que se llame a una solicitud de devolución de su contraseña y ejecutar todo esto como un trabajo por lotes para evitar que a partir de la lectura de la terminal.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: