J'aimerais créer un script automatisé qui appelle ssh-keygen
et crée des paires de clés publiques / privées que j'utiliserai plus tard. En principe, tout fonctionne bien avec ...
ssh-keygen -b 2048 -t rsa -f /tmp/sshkey -q
... sauf que cela me demande la phrase secrète qui chiffrerait les clés. Cela rend difficile l'automatisation.
Je pourrais fournir une phrase secrète via l'argument de ligne de commande -N thepassphrase
, afin d'éviter que l'invite n'apparaisse. Malgré tout, je ne souhaite même pas que les clés - en plus sécurisées par un cryptage - et que les paires de clés soient en texte clair.
Quelle est la meilleure solution à ce problème?
L' -q
option supposée signifier "calme / silencieux" n'évite toujours pas l'interaction phrase secrète. Aussi je n'ai pas trouvé quelque chose comme ça
ssh-keygen ...... -q --no-passphrase
S'il vous plait, ne commencez pas à prêcher et ne faites pas la leçon aux avantages et inconvénients de la "phrase secrète manquante", j'en suis conscient. Dans le formulaire interactif (pas en tant que script), l'utilisateur peut simplement appuyer sur [ENTRER] deux fois et la clé sera sauvegardée en texte brut. C'est ce que je veux réaliser dans un script comme celui-ci:
#! / bin / bash commande1 commande2 var = $ (commande3) # cela ne devrait pas arrêter le script et demander un mot de passe ssh-kegen -b 2048 -t rsa -f / tmp / sshkey -q
/tmp/sshkey
existe déjà, un message d’écrasement apparaît. Cela peut être empêché en redirigeant / fermant stdin - par exemple en ajoutant0>&-
.La façon la plus simple que j'ai trouvée de faire ce que vous voulez est la suivante (exemple avec le nom de fichier par défaut)
Si le
~/.ssh/id_rsa
fichier existe déjà, la commande se fermera sans rien modifier.Sinon, vous obtenez une nouvelle clé, dans ce nom de fichier.
Quoi qu'il en soit, vous n'avez rien écrasé et vous savez qu'à la fin, vous avez une clé.
la source
cat /dev/zero | ssh-keygen -q -N "" > /dev/null
yes "" | ssh-keygen -N "" >&- 2>&-
Cependant, fonctionne parfaitement et ne génère rien (qu’il existe ou non un fichier de clé) et n’écrase pas un fichier de clé existant auparavant.Cela a fonctionné pour moi:
Le
-P
est l'option de phrase secrète, et""
est la phrase secrète vide.la source
-P <passphrase>
option consiste à fournir le (ancien) mot de passe. linux.die.net/man/1/ssh-keygenVous pouvez utiliser s'attendre à envoyer le "entrer" pour vous
Sachez toutefois que si le fichier / tmp / sshkey existe déjà, il échouera car le résultat de la commande sera différent.
la source
J'ai fait un simple écho avant ssh-keygen. Alors
su - <user> -c "echo |ssh-keygen -t rsa"
Cela a été testé sur Redhat 6
la source
Pour un autre utilisateur, testé sur Ubuntu 18.04:
la source