El 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)
# Create a pipe
PIPE=$(mktemp -u)
mkfifo -m 600 $PIPE
# Attach it to file descriptior 3
exec 3<>$PIPE
# Delete the directory entry
rm $PIPE
# Write your password in the pipe
echo 'my_secret_password' >&3
# Connect with sshpass -d
sshpass -d3 ssh user@host
# Close the pipe when done
exec 3>&-
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
# Set your password in an environment variable
export SSHPASS='my_secret_password'
# Connect with sshpass -e
sshpass -e ssh user@host
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)
sshpass -p my_secret_password ssh user@host
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
o ignoreboth
y prefija sus comandos sensibles con un espacio. No se guardarán en la historia.
Autenticación de clave pública SSH
# Generate a key pair
# Do NOT leave the passphrase empty
ssh-keygen
# Copy it to the remote host (added to .ssh/authorized_keys)
ssh-copy-id user@host
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
# Start the agent
eval `ssh-agent`
# Add the identity (private key) to the agent
ssh-add /path/to/private-key
# Enter key passphrase (one time only, while the agent is running)
Conecta como siempre
ssh user@host
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).