Nmap, Wireshark, TCPdump, IPTraf, IPerf, Nast, Ettercap

 Charge moyenne sur 1mn : 1.36 Charge moyenne sur 5mn : 1.06 Charge moyenne sur 15mn : 0.87


How to create networks; route an address, a network; listen, trace packets on a network.





Site user blocks : Account info / user rights / summary

SSH - SCP par certificats

  • SSH - SCP par certificats
Ce howto explique comment se connecter d'une machine à une autre en SSH sans mot de passe. Pour pouvoir envoyer grâce à scp des fichiers sans qu'un utilisateur soit présent sur le bash (pour effectuer par exemple des sauvegardes automatisées) nous allons utilisé OpenSSL.

Informations :

Dates
  • Publish : : Thursday 17 november 2005
  • Modification : Saturdy 24 december 2022

  • 2646 views

Download the file(s) :

  1. putty-0.78.exe (1,41 mo)

Share :

Nous allons donc créer une paire de clés SSL 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.

Les valeurs par default de la commande ssh-keygen utilise l'algorithme de cryptographie asymétrique rsa (Rivest, Shamir, Adleman Algorithme) et la taille par default en bits de la clé est 2048.

Par exemple : ssh-keygen -b 4096 -t rsa

Ici, nous allons utiliser l'agorithme "Elliptic Curve Digital Signature Algorithm" (ECDSA) d'une longueur de 384 bits qui est l'agorithme le plus récent.

Du poste (server1) duquel vous souhaitez vous connecter :

ssh-keygen va générer une paire de clef publique et privé au format ECDSA.

Script avec 1 ligne

001orj@server1:~ # ssh-keygen -t ecdsa -b 384 -C orj@server1.zw3b.eu

Les valeurs du nombre de bits pour ECDSA sont 256, 384, 521.

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_ecdsa : votre clef privée
002* ~/.ssh/id_ecdsa.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

001orj@server1:~ # scp .ssh/id_ecdsa.pub lab3w_orj@remoteserver.zw3b.eu:

Ce qui permettra à mon utilisateur orj de se connecter automatiquement au serveur distant sur le compte lab3w_orj une fois que la clef publique sera copiée dans le fichier ~/.ssh/authorized_keys.

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

001lab3w_orj@remoteserver:~ # cat id_ecdsa.pub >> .ssh/authorized_keys
002lab3w_orj@remoteserver:~ # rm id_ecdsa.pub
003lab3w_orj@remoteserver:~ # chmod 700 .ssh
004lab3w_orj@remoteserver:~ # chmod 600 .ssh/authorized_keys

Retourner sur votre le poste (server1) duquel vous souhaitez lancer la connexion distante

La commande ssh-add .ssh/id_ecdsa permet d'ajouter la clef à notre session actuelle.

Pour que cela fonctionne en permanance, nous allons ajouter un "agent SSH" dans l'environnement de la machine (notre clef privée) pour que l'on (notre utilisateur) puisse se connecter au(x) serveur(s) distant(s) automatiquement (sans devoir écrire le mot de passe) et pour tout le temps que la machine sera allumée.

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

Recharger le fichier que l'on vient de modifier :

Script avec 1 ligne

001orj@server1:~ # source ~/.profile

Le shell vous demande de rentrer votre passphrase, valider la.

Essayez depuis cette console (ou une autre) de vous connecter à la machine distante, tout fonctionne bien ;)

Utilisez la connexion sans mot de passe depuis un script :

Si vous souhaitez utiliser un script qui est lancé depuis une crontab (tâche planifiée), il faut ajouter l'include suivant à votre script :

Script avec 1 ligne

001. $HOME/.ssh/environement

Sinon j'ajoute 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, ou depuis un script.

Nous utilisons, avons utilisé une authentification par "paire de clés".


Salutations,
Romain


Liens informatifs :
Liens complémentaires :

Liens qui peuvent vous intéressez :

Keywords :

SSH - SCP por certificados SSH - SCP بواسطة الشهادات DSA RSA ECDSA ECIES ECC Elliptic Curve Cryptography Ciphers Algorithms Negotiating Security


Author of the page

O.Romain.Jaillet-ramey

O.Romain.Jaillet-ramey

  • Firstname : Olivier Romain Luc
  • Lastname : : Jaillet-ramey
  • Arrived on tuesday 19 october 1976 (1976/10/19 00:00)
    46 years activity !

Translate this page with Google

Firefox Nighlty

Our friends from Framasoft are interested in Mozilla and asked them questions about Nightly: Firefox Night-club, free entry !






Valid XHTML 1.0 Strict CSS Valide !

ipv6 ready