Envíe la contraseña a través de stdin en `ssh-copy-id`

11

Necesito automatizar algunas implementaciones de identidad, idealmente usando ssh-copy-id.

Estoy tratando de proporcionar la contraseña a través de stdin, que es posible sshmediante el uso de la -Sbandera. Soy consciente de que puedo enviar opciones adicionales para sshusar el -oindicador en el ssh-copy-idcomando, sin embargo, no hay ejemplos de uso de este indicador en la página del manual.

Así que intenté pasar la contraseña SSH a ssh-copy-idtravés de stdin usando:

$# echo $TMP_PASS | ssh-copy-id -p2222 -i key.pub user@host -o "-S"

Pero todo lo que obtengo es:

/bin/ssh-copy-id: ERROR: command-line: line 0: Bad configuration option: -s

EDITAR:

Estoy tratando de proporcionar la contraseña a través de stdin, que es posible sshmediante el uso de la -Sbandera.

Esta afirmación es incorrecta. De hecho, he leído esta bandera del sudohombre;

2grit
fuente

Respuestas:

15

Es posible que desee intentar instalar sshpass y alterar su llamada a ssh-copy-id:

sshpass -p "$TMP_PASS" ssh-copy-id
dhag
fuente
lol, no en Mac y cuando brew installse intenta, aparece "Error: No hay una fórmula disponible con el nombre" sshpass "No agregaremos sshpass porque hace que sea demasiado fácil para los usuarios novatos de SSH arruinar la seguridad de SSH".
tofutim
Hay instrucciones para instalarlo con homebrew en osx aquí gist.github.com/arunoda/7790979#installing-with-homebrew Solo necesita ejecutarbrew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
ewatt
2

¿Dónde encontraste la información sobre la -Sopción? ¡Hace algo completamente diferente! Se utiliza para multiplexación y ControlPath.

SSH no aceptará contraseñas en la entrada estándar cada vez , por lo que debe preinstalar llaves autorizadas en su implementación (modo preferido) o por el uso sshpasso expectla escritura como se describe en muchas otras preguntas.

Jakuje
fuente
¡Maldita sea, tienes razón! Me acabo de dar cuenta de que la -Sbandera es de sudo: S
2grit
Si quiero instalar mis claves en 100 hosts, usando ssh-copy-id, teniendo en cuenta que todos los hosts ya tienen un nombre de usuario y contraseña predeterminados, ¿cómo evitar que ssh-copy-id me pregunte siempre la misma contraseña?
realtebo
Eso ya está respondido en ambas respuestas: use sshpass si tiene que esperar o algún script esperado.
Jakuje