¿Cómo automatizar el inicio de sesión SSH con contraseña? Estoy configurando mi máquina virtual de prueba, por lo que no se considera una gran seguridad. SSH elegido para una seguridad aceptable con una configuración mínima.
ex)
echo password | ssh id@server
Esto no funciona
Recuerdo que hice esto con algunos trucos que alguien me guió, pero ahora no puedo recordar el truco que usé ...
ssh
password
automation
Eonil
fuente
fuente
Respuestas:
No uses una contraseña. Genere una clave SSH sin contraseña y empújela a su VM.
Si ya tiene una clave SSH, puede omitir este paso ... Simplemente presione Enterla tecla y ambas frases de contraseña:
Copie sus claves al servidor de destino:
Ahora intente iniciar sesión en la máquina, con
ssh 'id@server'
, y regístrese:para asegurarnos de que no hayamos agregado claves adicionales que no esperaba.
Finalmente verifique el inicio de sesión ...
También puede considerar el uso
ssh-agent
si desea intentar mantener sus claves protegidas con una frase de contraseña.fuente
fuente
ssh
una vez antes de usarsshpass
, para confirmar la huella digital RSA.bash_history
en texto sin formato en su máquina.history -r
después del comando para borrar su historial. Buen punto sin embargo.Si bien la respuesta correcta para su pregunta es sshkey , hay una forma más segura: las claves SSH. Estás a solo tres pasos de la solución:
Genere un par de claves rsa :
luego cópielo en el servidor con un simple comando :
ahora puede iniciar sesión sin contraseña :
fuente
ssh-copy-id
.ssh-copy-id -i ~/.ssh/tatu-key-ecdsa user@host
Uso esperar:
Ejemplo:
fuente
-oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null
comando ssh para evitar aceptar la máquina en conocido_hostsPuede que esto no te sirva de nada, pero puedes hacerlo con Perl:
fuente
Me sorprende que nadie haya mencionado
plink
elputty-tools
paquete en Ubuntu:También está disponible en Windows y la sintaxis es principalmente compatible con el cliente openssh.
fuente
putty-tools
paqueteEl inicio de sesión único SSH generalmente se logra con la autenticación de clave pública y un agente de autenticación. Puede agregar fácilmente su clave de VM de prueba a un agente de autenticación existente (consulte el ejemplo a continuación). Existen otros métodos como gssapi / kerberos pero son más complejos.
sshpass
En situaciones donde
password
es el único método de autenticación disponible, sshpass puede usarse para ingresar automáticamente la contraseña. Preste especial atención a la sección CONSIDERACIONES DE SEGURIDAD de la página del manual . En las tres opciones, la contraseña está visible o almacenada en texto sin formato en algún momento :Tubo anónimo (recomendado por sshpass)
Es bastante engorroso en bash, posiblemente más fácil con lenguajes de programación. Otro proceso podría adjuntarse a su tubería / fd antes de que se escriba la contraseña. La ventana de oportunidad es bastante corta y está limitada a sus procesos o raíz.
Variable ambiental
Usted y el usuario root pueden leer las variables de entorno de su proceso (es decir, su contraseña) mientras se ejecuta sshpass (
cat /proc/<pid>/environ | tr '\0' '\n' | grep ^SSHPASS=
). La ventana de oportunidad es mucho más larga, pero aún se limita a sus propios procesos o raíz, no a otros usuarios.Argumento de línea de comando (menos seguro)
Esto es conveniente pero menos seguro como se describe en la página del manual. Los argumentos de la línea de comando son visibles para todos los usuarios (p
ps -ef | grep sshpass
. Ej .). sshpass intenta ocultar el argumento, pero todavía hay una ventana durante la cual todos los usuarios pueden ver su contraseña pasada por argumento.Nota al margen
Establezca su variable bash HISTCONTROL en
ignorespace
oignoreboth
y prefija sus comandos sensibles con un espacio. No se guardarán en la historia.Autenticación de clave pública SSH
La frase de contraseña es muy importante. Cualquiera que obtenga de alguna manera el archivo de clave privada no podrá usarlo sin la frase de contraseña.
Configurar el agente de autenticación SSH
Conecta como siempre
La ventaja es que su clave privada está encriptada y solo necesita ingresar su frase de contraseña una vez (también a través de un método de entrada más seguro).
fuente
¿Seguro que no quieres usar claves SSH en lugar de contraseñas? De esa manera es seguro y automático.
fuente
Dependiendo de sus necesidades de automatización, quizás Ansible sea una buena opción para usted. Puede administrar cosas como solicitar la contraseña, solicitar la contraseña de sudo, varias formas de cambiar el uso, usar de forma segura los secretos cifrados (bóveda).
Si eso no es adecuado, sugeriría esperar, como se sugiere en otra respuesta.
fuente