Me gustaría hacer un script automatizado que llame ssh-keygen
y cree algunos pares de claves pub / privados que usaré más adelante. En principio todo funciona bien con ...
ssh-keygen -b 2048 -t rsa -f /tmp/sshkey -q
... excepto que me pide la frase de contraseña que cifraría las claves. Esto hace que, en la actualidad, la automatización sea difícil.
Podría proporcionar una frase de contraseña a través del argumento de la línea de comandos -N thepassphrase
, así que para mantener el símbolo de aparecer. Aún así, ni siquiera deseo tener las claves, adicionalmente aseguradas por cifrado , y quiero que los pares de claves sean de texto sin formato.
¿Cuál es la (la mejor) solución a este problema?
La -q
opción que supuestamente significa "silencioso / silencioso" todavía no evita la interacción de frase de contraseña. Además no he encontrado algo como esto
ssh-keygen ...... -q --no-passphrase
Por favor, no comience a predicar sobre mí ni a exponerme sobre los pros y los contras de la "frase de contraseña faltante", soy consciente de eso. En la forma interactiva (no como una secuencia de comandos), el usuario puede simplemente presionar [ENTER] dos veces y la clave se guardará como texto sin formato. Esto es lo que quiero lograr en un script como este:
#! / bin / bash comando1 comando2 var = $ (comando3) # esto no debería detener el script y pedir contraseña ssh-kegen -b 2048 -t rsa -f / tmp / sshkey -q
/tmp/sshkey
embargo, en caso de que ya exista, se obtiene un mensaje de sobrescritura. Esto puede evitarse mediante redireccionamiento / cierre de stdin, por ejemplo, mediante la adición0>&-
.La forma más simple que encontré para hacer lo que quieres es esto (ejemplo usando el nombre de archivo predeterminado)
Si el
~/.ssh/id_rsa
archivo ya existe, el comando se cerrará sin modificar nada.Si no, obtienes una clave nueva, en ese nombre de archivo.
De cualquier manera, no ha sobrescrito nada, y sabe que al final tiene una clave.
fuente
cat /dev/zero | ssh-keygen -q -N "" > /dev/null
yes "" | ssh-keygen -N "" >&- 2>&-
Sin embargo, funciona bien y no genera nada (ya sea que exista o no un archivo de claves), y no sobrescribe un archivo de claves previamente existente.Esto funcionó para mí:
La
-P
es la opción de frase de contraseña y""
es la frase de contraseña vacía.fuente
-P <passphrase>
opción es proporcionar la frase de contraseña (antigua). linux.die.net/man/1/ssh-keygenPuede usar esperar para enviar el "enter" por usted
Pero tenga en cuenta que si el archivo / tmp / sshkey ya existe, fallará porque la salida del comando será diferente.
fuente
Hice un eco simple antes de ssh-keygen. Entonces
su - <user> -c "echo |ssh-keygen -t rsa"
Esto fue probado en Redhat 6
fuente
Para otro usuario, probado en Ubuntu 18.04:
fuente