Me gustaría usar mi clave SSH protegida con contraseña cuando realizo tareas con parallel-ssh
(y herramientas relacionadas). Sin embargo, no puedo hacer que esto funcione.
Toda la documentación, con respecto a parallel-ssh
, muestra que debería poder usar --askpass
o -A
hacer esto:
-A
--askpass
Prompt for a password and pass it to ssh. The password may be
used for either to unlock a key or for password authentication. The
password is transferred in a fairly secure manner (e.g., it will not
show up in argument lists). However, be aware that a root user on
your system could potentially intercept the password.
Sin embargo, cuando ingreso la frase de contraseña de mi clave, no funciona:
$ parallel-ssh --hosts=machines --user=my_user --askpass \
--timeout=0 --inline -v 'sudo apt-get update'
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password:
[1] 09:59:36 [FAILURE] amritiii Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa':
Permission denied (publickey,password).
[2] 09:59:37 [FAILURE] gbdev Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa':
Permission denied (publickey,password).
[3] 09:59:37 [FAILURE] code Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa':
Permission denied (publickey,password).
[4] 09:59:37 [FAILURE] apollo Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa':
Permission denied (publickey,password).
[5] 09:59:37 [FAILURE] odin Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa':
Permission denied (publickey,password).
[6] 09:59:37 [FAILURE] hathor Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa':
Permission denied (publickey,password).
[7] 09:59:37 [FAILURE] ldap Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa':
Permission denied (publickey,password).
[8] 09:59:37 [FAILURE] thor Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa':
Permission denied (publickey,password).
[9] 09:59:37 [FAILURE] bioserver Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa':
Permission denied (publickey,password).
He confirmado que mi clave SSH y mi frase de contraseña funcionan en cada una de las máquinas, por lo que no tengo idea de cómo hacer que esto funcione.
ssh
key-authentication
parallel-ssh
Nathan S. Watson-Haigh
fuente
fuente
parallel-ssh
y depssh
hecho son lo mismo.Respuestas:
Suponiendo que
parallel-ssh
ypssh
son equivalentes, entonces sí lo que estás tratando de hacer debería funcionar bien con una tubería de la frase de contraseña en el uso del-A
interruptor.Ejemplo
Aquí hay un ejemplo donde me conecto a 2 sistemas diferentes,
host1
yhost2
. Utilizo el-l
interruptor parapssh
proporcionar un usuario predeterminado deroot
. Sin embargo, alhost2
anular esto en el-H
interruptor especificando el nombre de host comouser1@host2
.Cuando el anterior funciona se dará cuenta de la salida del comando que estoy corriendo,
echo "hi"
.Tu problema
El problema con el que te encuentras con una frase de contraseña en tu par de claves SSH se debe a un error. Este es el error titulado: Problema 80: ¿No pasa la frase de contraseña? . El cuarto comentario a ese problema muestra un parche:
extracto
Referencias
fuente
parallel-ssh
y depssh
hecho son lo mismo. No estaba preguntando si era posible, la documentación deja en claro que es posible. Tengo problemas para lograr que funcione, como está documentado.parallel-ssh
todavía no están seguros de cuál es la mejor manera de detectar la pregunta de contraseña y responder con la contraseña / frase ingresada, me quedaré con mi método de llavero. No quisiera que mi frase de contraseña se revele inadvertidamente a la pregunta incorrecta.parallel-ssh
pasa la frase de contraseñaSSH
. Sin embargo, para aquellos que se encuentren con esta pregunta en el futuro, este error puede haberse solucionado o puede optar por no editar elaskpass_client.py
archivo. En cualquier caso, puede solucionar esto utilizando lakeychain
respuesta ( unix.stackexchange.com/a/128998/57414 ) o la respuesta ssh-agent ( unix.stackexchange.com/a/129022/57414 )Logré que esto funcionara instalando en
keychain
lugar de parchear manualmente el error que causaba mis problemas.Instalar y ejecutar llavero manualmente
Ejecutar comando sin entrada de contraseña / frase de contraseña
Ahora esta vez no necesito mi frase de contraseña cuando llamo
parallel-ssh
ya que el llavero se encarga de la autenticación:Ejecutar llavero al iniciar sesión
En lugar de tener que ejecutar manualmente y agregar su clave al llavero, simplemente agregue lo siguiente al final de su
~/.bash_profile
:Esto garantiza que en su primer inicio de sesión, después de un reinicio, se le solicite la frase de contraseña de su clave. Su clave permanecerá en el llavero hasta el próximo reinicio o borre el llavero manualmente.
Cron Jobs usando el llavero
Con lo anterior ingresado en su
~/.bash_profile
archivo, puede aprovechar el hecho de que su clave ahora está almacenada en el llavero al agriar el mismo archivo antes de ejecutar su cronjob. Por ejemplo, tengo un script de respaldo que se ejecuta a las 21:00 cada noche y copia cosas en una computadora remota a través de SSH. Esta es una entrada en mi crontab (crontab -e
):fuente
Utilice el agente ssh para autenticarse automáticamente (con un nombre de shell como argumento para establecer las variables de entorno del agente en ese nuevo shell). Agregue la clave con ssh-add y escriba su contraseña solo una vez.
fuente