Estoy usando ubuntu 12.04. Estoy usando ssh para conectarme a muchos servidores diariamente, así que puse sus parámetros en el archivo .ssh / config ; Me gusta esto :
Host server1
User tux
Port 2202
HostName xxx.x.xx.x
¿Hay alguna forma de poner contraseñas en este archivo, para cada conexión? Entonces, cuando el servidor solicita una contraseña, la terminal pone su pase y la envía al servidor, por lo que no necesito escribir la contraseña cada vez. Además, no quiero usar un par de claves pública / privada.
Respuestas:
No, no hay ningún método para especificar o proporcionar en la línea de comandos la contraseña de una manera no interactiva para la autenticación ssh utilizando un mecanismo incorporado openssh. Al menos no uno de lo que sé. Puede codificar su contraseña en el script esperado, pero tampoco es una buena solución.
Definitivamente, querría usar pares de claves para la autenticación sin contraseña, como dijo Michael, al final, la clave privada es prácticamente una gran contraseña en el archivo.
fuente
Para evitar la cadena de comentarios: Sí, esto es inseguro (ni siquiera posiblemente inseguro). Recomiendo encarecidamente que solo lo haga en una situación de laboratorio en una red aislada o en una situación similar que no implique servidores de producción o un servidor de producción potencial sin un reinicio / formato completo.
Quería configurar esto, ya que no creo que mi conmutador 2950 admita claves privadas / públicas y espero en algún momento obtener ese conocimiento, pero todavía no estoy allí.
Usando un alias y sshpass esto se puede lograr.
Mi alias de ejemplo es:
Donde "cisco" es la contraseña. Tenga en cuenta que no hay espacio entre -p y la contraseña.
El uso es (haciendo referencia a la pregunta):
Nota: Esto responde la pregunta en el título solo para aquellos que usan motores de búsqueda. Si está utilizando servidores como el ejemplo de la pregunta, se deben utilizar pares de claves privadas / públicas y no esta respuesta
fuente
Sí, como se mencionó anteriormente, no hay forma de guardar la contraseña simplemente. Recomendaría usar la clave ssh para la autorización.
primero, genera tu clave:
Luego copie la clave en sus servidores / escritorios:
Eso es todo. Nunca más se le pedirá la contraseña.
También recomiendo eliminar la autorización de contraseña en general, pero eso depende de usted.
fuente
sshpass -p $PASSWORD ssh $USERNAME@$HOST "echo `cat ~/.ssh/id_rsa` >> /home/$USERNAME/.ssh/authorized_keys"
pero este programa es más limpio y deja en claro la intención.No hay forma de hacer esto con ssh, es tan inseguro como puede ser.
Como Danila mencionó, podría usar guiones de espera, pero no me molestaría.
Me pregunto qué estás tratando de lograr. ¿Quieres saltar de un servidor a otro? En este caso, desea configurar y usar ssh-agent en su estación de trabajo y habilitar el reenvío de agente en los hosts de destino; de esta forma, el intercambio de credenciales se enrutará a su agente local sin tener que copiar su clave privada.
fuente
Yo uso este script del
~/.local/bin
directorioLo que me permite especificar la frase de contraseña como
#PS <password>
en el.ssh/config
archivo.Pero, como todo el mundo dice, es mejor utilizar
ssh-keys
conssh-agent
cuando es posiblefuente
La forma correcta de manejar esta situación es usar un agente ssh basado en sesión. Aquí es cómo:
La contraseña se mantendrá válida por el resto de la sesión. Solo necesita ejecutar el primer comando una vez, y puede agregar tantas teclas como desee después de eso. Cuando se cierra la sesión, también lo hace el agente, por lo que no hay almacenamiento codificado de una contraseña.
¡Sorprendido de que después de tanto tiempo esta respuesta no estuviera aquí!
fuente
Puede hacer esto de manera más segura utilizando sshpass
Establece tu contraseña sin historial
export PS = your_password ; history -d $ (history 1)
Establezca el alias de host como se indica arriba en ~ / .ssh / config
Use ssh pass para usar la variable de entorno e inicie sesión en la máquina requerida con un solo comando
sshpass -p $ PS ssh host_alias
Su entorno contiene su contraseña y es arriesgado que cualquier script que se ejecute pueda filtrar esta contraseña si no sabe lo que está ejecutando
fuente
sshpass -p $PS ...