[Bash] Script de création de clés SSH automatique

Script de création de clés SSH automatique [Bash] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 05-03-2009 à 17:17:41    

Bonjour,
 
J'essaye de développer un petit script pour créer une paire de clé SSH.
 
Tous d'abord en ligne de commande, ce la nous donne :
 
ssh_keygen -t dsa -b 1024 -C username@domain.ltd
 
on a ensuite la ligne Generating public/private... qui apparait pendant 5 secondes, puis :
 
Enter file in which to save the key : "appuie sur la touche entrée"
Enter passphrase : "appuie sur la touche entrée"
Enter same passphrase again : "appuie sur la touche entrée"
 
Maintenant j'essaye de passer sous un script BASH, cependant je bloque sur l'appui consécutif de la touche entrée trois fois de suite.
 
J'ai essayé echo -e "\n\n\n" | ssh_keygen -t dsa -b 1024 -C user...
 
Mais ça ne fonctionne pas ...
 
Avez vous une solution ?
Merci de votre aide !

Reply

Marsh Posté le 05-03-2009 à 17:17:41   

Reply

Marsh Posté le 05-03-2009 à 18:15:47    

Pour automatiser des commandes qui nécessitent des saisies manuelles, tu peux utiliser expect, outil dont le prérequis est tcl, sinon il existe des modules expect pour perl. Essaye une recherche avec tout ces mots clés.

Reply

Marsh Posté le 05-03-2009 à 21:32:20    

Est-ce que ceci ne ferais pas l'affaire ?

Code :
  1. ssh-keygen -q -t rsa1 -f id_rsa  -C '' -N '' >&/dev/null
  2. ls  -l id*


Message édité par sputnick le 06-03-2009 à 19:14:37
Reply

Marsh Posté le 06-03-2009 à 09:41:07    

La solution de Sputnick a l'air plus simple vu que je veux uniquement faire des appui successif sur la "touche entrée".
 
Cependant, il y a certaine chose que je ne comprend pas !
>/dev/null/ signifie uniquement que les données de sorties sont envoyées sur ce fichier ?
Par contre je ne comprend pas du tout la seconde ligne :
ls -l .id* : ou faut t'il se placer pour que la commande fonctionne et quelle est son intérêt ?
 
Merci encore de votre aide !

Reply

Marsh Posté le 06-03-2009 à 10:23:50    

johnson950 a écrit :

La solution de Sputnick a l'air plus simple vu que je veux uniquement faire des appui successif sur la "touche entrée".

 

Cependant, il y a certaine chose que je ne comprend pas !
>/dev/null/ signifie uniquement que les données de sorties sont envoyées sur ce fichier ?

Oui mais il ne s'agit que de message à caractère informatif.

johnson950 a écrit :


Par contre je ne comprend pas du tout la seconde ligne :
ls -l .id* : ou faut t'il se placer pour que la commande fonctionne et quelle est son intérêt ?


Là il te faut revoir les commandes de bases sous Unix.
ls est la commande permettant de lister les fichiers et répertoires. L'option -l permet de consulter les droits/privilèges, et les dates de modifications. Et .id* c'est une bête expression régulière.
J'ai dû mal à voir l'utilité de cette commande également puisque ta clé privé sera stockée dans le fichier id_rsa et la clé publique dans id_rsa.pub. Le '.' devant est une erreur.


Message édité par o'gure le 06-03-2009 à 10:25:37

---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 06-03-2009 à 11:45:53    

Merci pour cette information!
 
Cependant, j'essaye pour ma part d'utiliser une clé dsa : j'utilise donc la ligne de commande suivante:
 
ssh-keygen -q -t dsa -f id_dsa  -C 'nom du serveur' -N ''
 
Ca fonctionne, cependant lorsque j'essaye ensuite de copier la clé sur le serveur à l'aide de la fonction ssh-copy-id :
J'ai la ligne suivante qui apparait :
 
The authenticity of host 'nom du serveur' can be established.
RSA key fingerprint is ....................................................
Are you sure you want to continue connecting (yes/no) ?
(Pourquoi me parle t'il de clé RSA ?)
 
Alors que lorsque je fais une clé DSA avec la ligne de commande suivante :
 
ssh-keygen -q -t dsa -C 'nom du serveur'
 
lorsque j'utilise la fonction ssh-id-copy je dois directement inséré le mot de passe ce qui m'arrange pour le prochain script que j'utilise !
 
Avez vous une idée ?
Merci de votre aide

Reply

Marsh Posté le 06-03-2009 à 19:16:55    

Oui effectivement comme disent les Anglais, "typo". Le point était une erreur de saisie.
Par contre id* n'est pas une expression régulière, c'est un simple glob.
CF http://mywiki.wooledge.org/glob

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed