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 :
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
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.
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)