====== 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:
(official organization name only!)
Organizational Unit Name:
(you may leave this field empty)
Common Name: (fully qualified server name) (indiqué parfois comme YOUR NAME, mais mettre le hostname)
EMail: (server admin or role account)