pública - que es el certificado ssh
Cómo hacer que ssh reciba la contraseña de stdin (7)
¿Cómo se puede hacer que SSH lea la contraseña de stdin, que no funciona de manera predeterminada?
Puede usar sshpass, que está, por ejemplo, en los repositorios oficiales de Debian . Ejemplo:
$ apt-get install sshpass
$ sshpass -p ''password'' ssh username@server
No se puede con la mayoría de los clientes SSH. Puede solucionarlo utilizando API SSH, como Paramiko para Python. Tenga cuidado de no anular todas las políticas de seguridad.
La lista de correo de FreeBSD recomienda la biblioteca esperada .
Si necesita un inicio de sesión ssh programático, en realidad debería usar los inicios de sesión de clave pública ; obviamente, hay muchos menos agujeros de seguridad de esta manera en comparación con el uso de una biblioteca externa para pasar una contraseña a través de stdin
.
Un viejo post revivir ...
Encontré esto mientras buscaba una solución para el mismo problema, encontré algo y espero que algún día alguien lo encuentre útil:
- Instalar el programa ssh-askpass (apt-get, yum ...)
- Establezca la variable
SSH_ASKPASS
(export SSH_ASKPASS=/usr/bin/ssh-askpass
) - Desde un terminal, abra una nueva conexión ssh sin una variable TERMINAL indefinida (
setsid ssh user@host
)
Esto parece lo suficientemente simple como para ser seguro, pero no se verificó aún (solo se usa en un contexto seguro local).
Aquí estamos.
basado en este post puedes hacer:
Cree un comando que abra una sesión ssh usando SSH_ASKPASS (busque SSH_ASKPASS en man ssh )
$ cat > ssh_session <<EOF
export SSH_ASKPASS="/path/to/script_returning_pass"
setsid ssh "your_user"@"your_host"
EOF
NOTA: Para evitar que ssh intente preguntar en tty usamos setsid
Cree un script que devuelva su contraseña (note echo "echo )
$ echo "echo your_ssh_password" > /path/to/script_returning_pass
Hazlos ejecutables
$ chmod +x ssh_session
$ chmod +x /path/to/script_returning_pass
intentalo
$ ./ssh_session
Tenga en cuenta que ssh significa shell seguro, y si almacena su usuario, host y contraseña en archivos de texto sin formato, está engañando a la herramienta y creando una posible brecha de seguridad.
No estoy seguro de la razón por la que necesita esta funcionalidad, pero parece que puede obtener este comportamiento con ssh-keygen.
Le permite iniciar sesión en un servidor sin utilizar una contraseña al tener una clave RSA privada en su computadora y una clave pública RSA en el servidor.
Destilar esta respuesta deja una secuencia de comandos simple y genérica:
#!/bin/bash
[[ $1 =~ password: ]] && cat || SSH_ASKPASS="$0" DISPLAY=nothing:0 exec setsid "$@"
Guárdelo como pass
, haga un pass
chmod +x pass
y luego úselo de esta manera:
$ echo mypass | pass ssh user@host ...
Si su primer argumento contiene password:
, pasa su entrada a su salida ( cat
); de lo contrario, inicia lo que se presentó después de configurarse como el programa SSH_ASKPASS
.
Cuando ssh
encuentra con el conjunto SSH_ASKPASS
Y DISPLAY
, iniciará el programa mencionado por SSH_ASKPASS
, pasando user@host''s password:
del sistema user@host''s password: