Informations :
Dates
- Publish : : Thursday 17 november 2005
- Modification : Thursday 01 september 2011
Share :
Nous allons donc créer une paire de clés SSL de longueur 2048 bits publique/privé que nous utiliserons pour remplacer le mot de passe de l'utilisateur. Celui-ci poura se connecter de son client SSH préféré ou grâce à un script sans devoir taper de mot de passe.
Du poste duquel vous souhaitez vous connecter :
ssh-keygen
va générer une paire de clef publique et privé dsa (-t dsa
) de longueur 2048 bits (-b 2048
).
Script avec 1 ligne
001ssh-keygen -b 2048 -t dsa
Vous pouvez aussi créer une clef rsa avec le paramètre -t rsa
(ssh-keygen -b 2048 -t rsa). Si vous n'aimez pas le nom standard de la clef SSH vous pouvez aussi le changer avec le paramètre -f nom_de_la_clef
ssh-keygen
vous demandera aussi de choisir l'emplacement de la clef mais je vous conseille de garder l'emplacement par défaut. Ensuite il vous demandera d'entrée une passphrase.
Après cela vous disposerez de deux fichiers dans votre dossier ~/.ssh/
Script avec 2 lignes
001* ~/.ssh/id_dsa : votre clef privée 002* ~/.ssh/id_dsa.pub : votre clef publique
Copiez votre clef ssh publique sur un serveur distant :
Nous envoyons sur notre serveur distant la clé publique.
Script avec 1 ligne
001scp .ssh/id_dsa.pub save@serveurdistant.com:
Se connecter sur un serveur ssh distant et y mettre notre clef ssh au bon endroit :
Copier le contenu de la clé publique dans le fichier ~/.ssh/authorized_keys puis supprimer la clé et attribuer les droits de lecture que pour votre utilisateur.
Script avec 4 lignes
001cat id_dsa.pub >> .ssh/authorized_keys 002rm id_dsa.pub 003chmod 700 .ssh 004chmod 600 .ssh/authorized_keys
Retourner sur votre le poste duquel vous souhaitez lancer la connexion distante
Utiliser ssh-agent
comme il se doit ;)
Ajouter ceci à votre $HOME/.profile
(Cela permet d'avoir notre ssh-agent à jour, de pouvoir l'utiliser depuis une console et depuis un script) :
Script avec 20 lignes
001SSH_ENV="$HOME/.ssh/environement" 002function start_agent { 003 echo "Initialising new SSH agent..." 004 /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}" 005 echo succeeded 006 chmod 600 "${SSH_ENV}" 007 . "${SSH_ENV}" > /dev/null 008 /usr/bin/ssh-add; 009} 010 011# Source SSH settings, if applicable 012if [ -f "${SSH_ENV}" ]; then 013 . "${SSH_ENV}" > /dev/null 014 #ps ${SSH_AGENT_PID} doesn't work under cywgin 015 ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || { 016 start_agent; 017 } 018else 019 start_agent; 020fi
Reconnectez-vous.. une fois authentifié, le shell vous demandera (commande ssh-add .ssh/id_dsa
) de taper votre passphrase. Essayez depuis cette console de vous connecter à la machine distante, ca fonctionne ;)
Puis, si vous souhaitez utiliser un script exécuter depuis une crontab, il faut ajouter l'include suivant . $HOME/.ssh/environement
à votre script.
Sinon ajouter le SSH-AGENT comme cela en haut des scripts :
Script avec 3 lignes
001auth=`find /tmp -user $LOGNAME -type s -name "*agent*" -print 2>/dev/null` 002SSH_AUTH_SOCK=$auth 003export SSH_AUTH_SOCK
Voilà vous pouvez maintenant vous connectez sur le serveur distant sans avoir à rentrer votre mot de passe, nous utilisons authentification par "paire de clés".