Automazione delle pressioni di tasti "invio" per script bash che generano chiavi ssh


101

Vorrei creare uno script, che viene eseguito semplicemente ssh-keygen -t rsa. Ma come passargli 3 volte entra?

Risposte:


217

Provare:

ssh-keygen -t rsa -N "" -f my.key

-N "" gli dice di usare una passphrase vuota (la stessa di due delle entrate in uno script interattivo)

-f my.keygli dice di conservare la chiave in my.key(cambia come meglio credi).

Il tutto funziona senza che tu debba fornire alcun tasto di invio :)

Per inviare gli ingressi a uno script interattivo:

echo -e "\n\n\n" | ssh-keygen -t rsa

4
È una risposta corretta, ma vorrei comunque sapere come premere Invio più di una volta - in un altro script.
Sławosz

3
Certo: aggiornata la risposta per includere come inviare nuove righe a uno script.
Rudu

2
echo -e "\ n \ n \ n" | sshkeygen -t rsa non funziona per me, puoi provarlo tu stesso? Passa solo il primo ingresso. Ma su altri, semplici script funziona.
Sławosz

1
L'ho provato prima di pubblicarlo - funziona bene, anche se sembra che il trattino ssh-keygensia caduto - l'hai aggiunto di nuovo? {modificato} Inoltre - non è possibile eseguire lo script più di una volta - cambia le domande per confermare che si desidera sovrascrivere il file di _rsachiavi esistente (quindi è necessario fornire ay o n)
Rudu

13
Consiglierei di usare yes ""invece di echo -e "\n\n\n"( yesrestituisce qualunque argomento sia dato [o "y" per impostazione predefinita] in infinito - perfetto per queste situazioni in cui si vuole solo fornire una risposta "sì" a qualunque cosa un programma potrebbe richiedere). yesè più breve e dovrebbe ssh-keygenmai aggiungere una domanda, anche questa riceverà automaticamente una risposta. :)
zrajm


1

D'accordo con Michel Marro tranne per il fatto che ha bisogno di altro: se il file esiste già, sarà comunque interattivo chiedendo se deve sovrascriverlo.

Usa la risposta a questa domanda .

yes y | ssh-keygen -q -t rsa -N '' >/dev/null

Il reindirizzamento a null è necessario per disattivare il messaggio di sovrascrittura.


0
echo -e "\n"|ssh-keygen -t rsa -N ""

Eh? Questo in realtà ha meno newline di una delle risposte che dici non funziona (e questo è sul sottoinsieme di piattaforme in cui echo -eemette qualcosa di diverso da -etutti, che non ssh-keygenè ovunque è disponibile).
Charles Duffy

... per essere chiari, faccio uso di produzione ssh-keygen -N ''come parte di una procedura di installazione automatizzata, e non legge affatto lo stdin, quindi non c'è bisogno di echo( alcuna echo variante) convogliata in esso. (Certo, credo che lo standard sia connesso /dev/nullnel mio caso d'uso di produzione; potrebbe esserci un comportamento diverso quando è collegato a un TTY, ma la risposta migliore è </dev/nullpiuttosto che echo ... |)
Charles Duffy

1
Mi viene chiesto di inserire un nome file: $ ssh-keygen -t rsa -N '' Generating public/private rsa key pair. Enter file in which to save the key (/home/dlyons/.ssh/id_rsa):
Mannix

0

Si consiglia di utilizzare ed25519 per sicurezza e prestazioni.

yes "y" | ssh-keygen -o -a 100 -t ed25519 -C "Bla Bla" -f /mypath/bla -N ""

Qui

-o Formato della chiave OpenSSH invece del vecchio PEM (richiede OpenSSH 6.5+)

-a Numero di test di primalità durante lo screening dei candidati DH-GEX

-t Tipo di chiave (ed25519, RSA, DSA ecc.)

-f /mypath/bla Il percorso e il nome del file di output

-N "" Usa passphase vuoto

e yes "y"per nessuna interazione.

Genererà due file

/mypath/bla
/mypath/bla.pub

dove il blafile è privato ed bla.pubè pubblico.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.