Outils pour utilisateurs

Outils du site


tips_informatiques:linux:cryptographie:cryptographie

Connexion SSH sans login/pwd (via clés)

OS: Linux

Problème:

Lors d'une connexion SSH, il est nécessaire de s'identifier pour avoir accès à une machine distante (serveur). Cela pose problème dans le cas de scripts que l'on veut lancer automatiquement, si l'on ne veut pas stocker les login/pwd dans un fichier.

Solution:

Une manière différente de s'identifier est l'utilisation de clés publiques/privées.

L'idée est de créer une paire de clés privée-publique au niveau du client, et de donner la clé publique au serveur. De cette manière, le serveur est en mesure d'identifier le client comme authorisé, et il ne demande plus à celui-ci de s'identifier au moyen des login/pwd.

Commandes:

Création des clés (algorythme DSA):

ssh-keygen -t dsa
ssh-keygen -t rsa -b 2048 -f ~/.ssh/rsa_aut

Cette commande demande :

  • l'emplacement où déposer les clés. Laisser par défaut.
  • Une phrase pwd. Si le but est de permettre les tâches automatisées, laisser vide.

Copie de la clé publique sur le serveur:

cat ~/.ssh/id_dsa.pub | ssh user@server "cat - >> ~/.ssh/authorized_keys"

ou au moyen de la commande

ssh-copy-id -i ~/.ssh/id_dsa.pub user@server

Vérification:

ssh user@server

Les login/pwd ne sont plus demandés.

Plusieurs clés:

Dans le cas où l'on veut utiliser plusieurs clés privées, il est possible d'indiquer quelle est la clé utilisée par défaut pour se connecter à un serveur:

Créer le fichier

touch ~/.ssh/config
chmod 600 ~/.ssh/config

Le contenu du fichier doit ressembler à cela:

Host *.alaxos.org
  IdentityFile ~/.ssh/id_dsa.home
  User user1

Host *.alaxos.net
  IdentityFile ~/.ssh/id_rsa.work
  User user2
  Port 44787

Afficher le contenu d'un certificat

OS: Linux

But:

Afficher le contenu d'un certificat X.509 dans le but de connaître ses caractéristiques. On veut donc les afficher dans un format texte lisible.

Commande:

openssl x509 -in server.crt -text

Sans spécifier -text, la commande affiche la liste des options disponibles.

Création d'une demande de certificat

OS: Linux

Générer une clé privée:

openssl genrsa -rand /var/log/mail.log.1.gz:/var/log/messages.1.gz:/var/log/mail.log.2.gz:/var/log/user.log.1.gz -out host.domain.ch.key 1024

-rand = permet de spécifier des fichier augmentant l'entropie de la clé générée. (prendre de gros fichiers au hasard)

Générer la demande de certificat (CSR):

openssl req -new -key ./host.domain.ch.key -out host.domain.ch.csr
 
 Country Name: CH              (always enter "CH")
 State [Some-State]: .         (enter "." to provide an empty field)
 Locality Name []: .           (enter "." to provide an empty field)
 Organization Name: <YOUR ORGANIZATION>  
                               (official organization name only!)
 Organizational Unit Name: <YOUR UNIT> 
                               (you may leave this field empty)
 Common Name: <HOST.DOMAIN.CH> (fully qualified server name)  (indiqué parfois comme YOUR NAME, mais mettre le hostname)
 EMail: <e-mail>               (server admin or role account)
tips_informatiques/linux/cryptographie/cryptographie.txt · Dernière modification: 2012/03/12 09:20 par nico