====== 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)