Automatisation des pressions sur les touches «enter» pour le script bash générant des clés ssh


101

Je voudrais créer un script qui s'exécute simplement ssh-keygen -t rsa. Mais comment y passer 3 fois entrer?

Réponses:


217

Essayer:

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

-N "" lui dit d'utiliser une phrase de passe vide (la même que deux des entrées dans un script interactif)

-f my.keylui dit de stocker la clé dans my.key(changez comme bon vous semble).

Le tout fonctionne sans que vous ayez à fournir de clés d'entrée :)

Pour envoyer des entrées à un script interactif:

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

4
C'est une réponse correcte, mais je voudrais toujours savoir comment appuyer sur Entrée plus d'une fois - dans un autre script.
Sławosz

3
Bien sûr - a mis à jour la réponse pour inclure comment envoyer des nouvelles lignes à un script.
Rudu

2
echo -e "\ n \ n \ n" | sshkeygen -t rsa ne fonctionne pas pour moi, pouvez-vous l'essayer vous-même? Il ne passe que la première entrée. Mais sur un autre script simple, cela fonctionne.
Sławosz

1
Je l'ai testé avant de le publier - cela fonctionne bien, bien qu'il semble que le tableau de bord ait ssh-keygenété abandonné - l'avez-vous ajouté? {édité} De plus - vous ne pouvez pas exécuter le script plus d'une fois - il modifie les questions pour confirmer que vous voulez écraser le _rsafichier de clés existant (donc ay ou n doit être fourni)
Rudu

13
Je recommanderais d'utiliser à la yes ""place de echo -e "\n\n\n"( yesrenvoie n'importe quel argument donné [ou "y" par défaut] à l'infini - parfait pour ces situations où l'on veut juste fournir une réponse "oui" à tout ce qu'un programme pourrait demander). yesest plus court, et devrait ssh-keygenjamais ajouter une question, qui sera automatiquement répondue aussi. :)
zrajm


1

D'accord avec Michel Marro sauf qu'il en faut encore plus: si le fichier existe déjà, il sera toujours interactif en demandant s'il doit l'écraser.

Utilisez la réponse à cette question .

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

La redirection vers null est nécessaire pour faire taire le message d'écrasement.


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

Hein? Cela a en fait moins de nouvelles lignes que l'une des réponses que vous prétendez ne pas fonctionner (et c'est sur le sous-ensemble de plates-formes où echo -eémet autre chose que -edu tout, ce qui n'est pas ssh-keygendisponible partout ).
Charles Duffy

... pour être clair, j'utilise la production ssh-keygen -N ''dans le cadre d'une procédure d'installation automatisée, et il ne lit pas du tout stdin, il n'est donc pas nécessaire que la echo( aucune echo variante) y soit envoyée. (Certes, je crois que stdin est connecté à /dev/nulldans mon cas d'utilisation de production; il pourrait bien y avoir un comportement différent lorsqu'il est attaché à un TTY, mais la meilleure réponse est </dev/nullplutôt que echo ... |)
Charles Duffy

1
Il me demande un nom de fichier: $ 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

Il est recommandé d'utiliser ed25519 pour la sécurité et les performances.

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

ici

-o Format de clé OpenSSH au lieu de l'ancien PEM (nécessite OpenSSH 6.5+)

-a Nombre de tests de primalité lors de la sélection des candidats DH-GEX

-t Type de clé (ed25519, RSA, DSA etc.)

-f /mypath/bla Le chemin et le nom du fichier de sortie

-N "" Utiliser une phase de passe vide

et yes "y"pour aucune interaction.

Il générera deux fichiers

/mypath/bla
/mypath/bla.pub

où le blafichier est privé et bla.pubpublic.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.