linux - servidor - ¿Cómo hacer que ssh-add lea la frase de contraseña de un archivo?
ssh sin contraseña windows (2)
Dependiendo de su distribución y de la versión de ssh-add, puede usar o no la opción -p
de ssh-add que lee la frase de contraseña de stdin de esta manera:
cat passfile | ssh-add -p keyfile
Si esto no funciona, puede usar Expect , una herramienta de Unix para que las aplicaciones interactivas no sean interactivas. Tendrás que instalarlo desde tu administrador de paquetes.
He escrito una herramienta para ti a la espera. Simplemente copie el contenido en un archivo llamado ssh-add-pass y establezca permisos ejecutables en él ( chmod +x ssh-add-pass
). También puede copiarlo en / usr / bin o / usr / local / bin para acceder desde la búsqueda $ PATH.
#!/bin/bash
if [ $# -ne 2 ] ; then
echo "Usage: ssh-add-pass keyfile passfile"
exit 1
fi
eval $(ssh-agent)
pass=$(cat $2)
expect << EOF
spawn ssh-add $1
expect "Enter passphrase"
send "$pass/r"
expect eof
EOF
El uso es simple: ssh-add-pass keyfile passfile
Estoy tratando de agregar la clave en ssh-agent
y quiero que ssh-add
lea la contraseña del archivo utilizando. ¿Como es posible?
¿Cómo automatizo este proceso desde el script de shell?
Aquí hay algunas soluciones para los sistemas que no soportan -p
:
$ PASS="my_passphrase"
$ install -vm700 <(echo "echo $PASS") "$PWD/ps.sh"
$ cat id_rsa | SSH_ASKPASS="$PWD/ps.sh" ssh-add - && rm -v "$PWD/ps.sh"
donde ps.sh
es básicamente tu script que imprime tu frase de contraseña. Ver: man ssh-add
.
Para hacerlo más seguro (para no guardarlo en el mismo archivo), use mktemp
para generar un archivo privado aleatorio, hágalo ejecutable ( chmod
) y asegúrese de que imprime la frase de paso en la salida estándar una vez ejecutada.