web-dev-qa-db-fra.com

Automatisez ssh-keygen -t rsa pour qu'il ne demande pas de phrase secrète

J'ai besoin d'automatiser ssh-keygen -t rsa sans mot de passe, c’est-à-dire entrer à l’invite.
Comment puis-je faire cela à partir d'un script Shell?

151
Tampa

Pour générer une paire de clés SSH sans demander de phrase secrète, vous pouvez procéder comme suit:

$ ssh-keygen -f id_rsa -t rsa -N ''
219
Shamoon

Si vous devez le faire à partir de PowerShell sous Windows, utilisez:

ssh-keygen -f $Name -t rsa -N '""'

notez que vous devez également vous assurer que le répertoire git bin est dans votre chemin:

$sshPath = "<path>\git\bin\"

$env:path += ";$sshPath"

Ensuite, pour l'utiliser dans PoshGit c'est juste:

Add-SshKey "<path>\.shh\KeyFilename"
24
Daniel Little
$ ssh-keygen -f $HOME/.ssh/id_rsa -t rsa -N ''
18
GMaster

Juste une correction pour répondre à la question 2 ... J'ai découvert sur mon OL et le système RHEL que le nom du fichier devrait être id_rsa et non id.rsa.

Ainsi, sur un OL ou un système RHEL, la commande serait:

$ ssh-keygen -f id_rsa -t rsa -N ''
11
ASHU

Qu'en est-il de :

ssh-keygen -q -t rsa -f ~/.ssh/id_rsa -N ''

Comme indiqué dans man ssh-keygen:

SYNOPSIS
     ssh-keygen [-q] [-b bits] [-t dsa | ecdsa | ed25519 | rsa | rsa1] [-N new_passphrase] [-C comment] [-f output_keyfile]
(...)
      -q      Silence ssh-keygen.

(c'est-à-dire avec openssh-client paquet dans l’étendue Debian 9.4: OpenSSH_6.7p1 Debian-5+deb8u4)

8
Manumie
$ printf '\n' | ssh-keygen -N ''
0
Yang Young

J'avais besoin d'automatiser dans un script bash la commande ssh-keygen et la réponse finale qui me convenait bien:

echo -e "\n" | ssh-keygen -N "" &> /dev/null

La commande echo avec le -e interprète "\ n" comme une touche Entrée, mais ne fonctionne pas avec la phrase secrète. Ensuite, en utilisant l'option -N "" (phrase secrète vide), le mot de passe sera vide et ne demandera rien. &>/dev/null enverra les "stdout" et "stderr" à/dev/null afin que rien ne soit imprimé via l'affichage.

0
mastyleki