servidores servidor relaciones relacion que publica privada pida password para funciona entre crear contraseña configurar confianza conectar clave linux bash shell ssh ssh-agent

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.