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?
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 ''
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"
$ ssh-keygen -f $HOME/.ssh/id_rsa -t rsa -N ''
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 ''
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
)
$ printf '\n' | ssh-keygen -N ''
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.