Objectifs de la séance ¶
- Générer un couple de clés publique/privées
- Déployer une machine virtuelle OpenNebula
- Ajouter une clé publique autorisée pour se connecter à une machine distante
Génération d'un couple de clés publique/privée ¶
La mécanique classique d'authentification, utilisant un identifiant et un mot de passe, peut être avantageusement remplacée par l'utilisation d'un couple de clés asymétriques. La clé publique est utilisée sur la machine distante pour reconnaitre la signature de la clé privée détenue sur la machine locale et ainsi autoriser ou non la connexion.
Vous pouvez consulter la page Wikipédia concernant la cryptographie asymétrique ainsi que la documentation Ubuntu sur l'authentification SSH
par clé.
- Vérifiez la présence de la clé publique sur l'ordinateur client :
cat ~/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAAD … HItSgQFpltKk= cutron01@2A4V1-31UVM6
- Si vous n'en avez pas, générez un couple de clés sur l'ordinateur client avec :
ssh-keygen -t rsa
Generating public/private rsa key pair. Enter file in which to save the key (/home/Users/cutron01/.ssh/id_rsa): Created directory '/home/Users/cutron01/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/Users/cutron01/.ssh/id_rsa Your public key has been saved in /home/Users/cutron01/.ssh/id_rsa.pub The key fingerprint is: SHA256:M5Hq37j3oL5eMrdRefGhytrqKqzar2jwYfbtbKGrbPE cutron01@2A4F1-31UPC05a The key's randomart image is: +---[RSA 3072]----+ | | | . | | + | | . * o | | o = S | |. =. ... o | |.+.= o.o+ o | | *o E.o=.@o. | |+.=+o+=*/*==. | +----[SHA256]-----+
Remarque importanteUtilisez une passphrase pour protéger la clé privée.
- Observez les fichiers générés :
ls ~/.ssh/ id_rsa id_rsa.pub
- Vérifiez que la clé privée est bien lisible de vous seul :
ls -l ~/.ssh/ total 8 -rw------- 1 cutron01 URCA-Faculty 2655 oct. 20 14:09 id_rsa -rw-r--r-- 1 cutron01 URCA-Faculty 577 oct. 20 14:09 id_rsa.pub
Remarque importanteLa clé privée
~/.ssh/id_rsa
doit rester secrète. - Si la clé est accessible par d'autres utilisateurs («
rw
» pour le groupe ou les autres, «+
» à la fin de la chaîne de droits), lancez la commande suivante :setfacl -Rb ~/.ssh
Ajouter une clé publique dans la configuration de OpenNebula
¶
Vous vous apprêtez à déployer une machine virtuelle dans le cloud OpenNebula
pour laquelle aucun couple identifiant/mot de passe ne permet de se connecter. La solution d'authentification va utiliser une clé publique pour les connexions SSH. La clé publique sera automatiquement ajoutée dans le compte root
de la machine virtuelle lors de son déploiement.
- Rendez-vous sur http://cloud/ et connectez-vous avec votre compte universitaire
- Localisez le menu permettant d'accéder à vos préférences
- Cliquez sur le menu d'ajout d'une clé SSH publique
- Copiez la clé publique (contenu du fichier
~/.ssh/id_rsa.pub
) et collez-la dans le champ dédié de l'interface de OpenNebula - Validez la saisie en appuyant sur « Add SSH Key »
Déployer une machine virtuelle OpenNebula ¶
La clé publique étant connue dans votre espace OpenNebula, elle va pouvoir être utilisée lors du processus de déploiement de vos machines virtuelles, en particulier le modèle fourni basé sur Ubuntu.
- Localisez le bouton d'ajout d'une machine virtuelle sur le tableau de bord OpenNebula
- Observez les modèles disponibles
- Trouvez le modèle correspondant à votre choix, « Ubuntu Minimal 22.04 » est donné à titre d'exemple
- Donnez un nom explicite à la machine virtuelle et fixez la taille de son disque dur (les valeurs sont données à titre d'exemple) puis validez à l'aide du bouton « Create »
- La machine virtuelle est en cours de déploiement (indicateur orange), vous pouvez cliquer sur son nom pour plus de détails
- Repérez l'adresse IP de la machine virtuelle dans les détails de ses statistiques
Connexion SSH à la machine virtuelle grâce à la clé ¶
La génération du couple de clés et la saisie de la clé publique dans l'interface de OpenNebula associées au processus de déploiement vous permettent normalement de vous connecter sans mot de passe.
- Lancez la tentative de connexion à la machine virtuelle :
ssh root@ip_de_la_machine_virtuelle The authenticity of host '10.31.5.122 (10.31.5.122)' can't be established. ECDSA key fingerprint is SHA256:PyDE3yoSm0JyKF68lbZ60SAakxYQ8+y4uVIaWLSNXeE. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '10.31.5.122' (ECDSA) to the list of known hosts. Welcome to Ubuntu 20.04.2 LTS (GNU/Linux 5.4.0-70-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage System information as of Wed Oct 20 13:29:15 UTC 2021 System load: 0.0 Processes: 104 Usage of /: 27.8% of 4.56GB Users logged in: 0 Memory usage: 22% IPv4 address for eth0: 10.31.5.122 Swap usage: 0% * Super-optimized for small spaces - read how we shrank the memory footprint of MicroK8s to make it the smallest full K8s around. https://ubuntu.com/blog/microk8s-memory-optimisation 135 updates can be installed immediately. 81 of these updates are security updates. To see these additional updates run: apt list --upgradable Last login: Wed Oct 20 13:28:41 2021 from 10.31.4.153 root@localhost:~#
- Vérifiez la configuration SSH de l'utilisateur
root
ls -l .ssh/ total 4 -rw------- 1 root root 1309 Oct 20 07:27 authorized_keys
- Vérifiez que la clé publique que vous avez fournie dans l'interface de OpenNebula fait bien partie des clés autorisées
cat .ssh/authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAYADAQABAAACAQCvVGxxy/z+h/YOGWuac2kT8G7cvq8uIgg5XuGc48rqirKsndv//X6e05FqFUvD8BANG6XWqZDctJOQusXbheHe/9L287O3ky//ibKGVyTOXTgSnZs5lJiHwM54LInMEBJT2FCx5gXyBFgxIDU9Rjehnbkc02yQK67mKDfy2Nf9xCIa8rZgWEbPk2IilPKuYcBKnAzrDQTM31W/E0I8pSygqPvvJXpEm/+iupQKy6eTcbquGWgEyUwl1nZt0gWefWkcv4utIp8mBXHCa6kclOC0o3ct3YAREhzuwQhB2yy6n1jkuoBksSpXCL9XmBnQbSGvZwKu0NoZxBV9k+NRaqe5MRtEEFuePWW1ZmZC1UFSUHlRQKy8lZSqfy7og00wUkpyt6V9EqJSDMyJD1pHzXgX9v1+xZw0EzXvLrmuzydYgzP7eHhV5WbEOkzrifpAyl5xuNYFNviSledXYva8EVEGBaPsz41le+sAauUz5WujtZQSefmNNUv8wrwYd05pi0/S/jN3xHIrTcq+M9mQrYDf8fehY0Tb499meWaM397lLQolP5pidUY/kQyDPHRAibT6OkTNRRD5tUN09+0b9ckDuxt3SQ49yeNhI59sPeDBfm6IaEg0Q9XMof19IF09m+6TyPZcd9AqDbL9gG54Sg7pCVAuv0325ndApFhu2VRcTQ== cutron01@linux
Ajout d'une nouvelle clé SSH publique sur la machine distante ¶
Si vous travaillez en équipe, ou si vous souhaitez travailler depuis votre ordinateur personnel, vous pouvez enregistrer de nouvelles clés publiques sur la machine virtuelle partagée. Il suffit que quelqu'un avec la capacité de se connecter à la machine virtuelle récupère la nouvelle clé publique et l'ajoute à la liste des clés autorisées de l'utilisateur de la machine virtuelle.
- Ouvrez un shell sur l'ordinateur qui souhaite pouvoir se connecter à la machine virtuelle
- Référez-vous à la partie « Génération d'un couple de clés publique/privée », si nécessaire Information
Si vous souhaitez utiliser plusieurs couples de clés sur l'ordinateur qui souhaite pouvoir se connecter à la machine virtuelle, vous pouvez générer un nouveau couple de clés, sans pour autant écraser le couple de clés existant. L'option «
-f
» de la commandessh-keygen
permet de préciser un nom de fichier pour la clé privée, et la clé publique portera le même nom suivi de «.pub
».ssh-keygen -t rsa -f ~/.ssh/id_rsa_nom_de_la_clé
permet de générer les fichiers «~/.ssh/id_rsa_nom_de_la_clé
» et «~/.ssh/id_rsa_nom_de_la_clé.pub
».Vous pourrez ensuite désigner la clé à utiliser lors de l'invocation de la commande
ssh
en précisant le fichier d'identité (la clé privée) avec l'option «-i
».Vous pouvez également configurer spécifiquement l'accès à cette machine dans le fichier «
~/.ssh/config
» en ajoutant une section dédiée :Host nom_de_la_machine_virtuelle Hostname ip_de_la_machine_virtuelle User utilisateur_de_la_machine_virtuelle IdentityFile ~/.ssh/id_rsa_nom_de_la_clé
- Localisez la clé publique et son contenu :
cat ~/.ssh/id_rsa.pub
- Copiez la clé publique «
id_rsa.pub
» pour la transférer à une personne ayant la capacité de se connecter à la machine virtuelle - Sur l'ordinateur ayant déjà accès à la machine virtuelle, récupérez la nouvelle clé publique dans un répertoire temporaire
- Enregistrez la nouvelle clé publique sur la machine distante à l'aide de la commande
ssh-copy-id
ssh-copy-id -i répertoire_temporaire/id_rsa.pub root@ip_de_la_machine_virtuelle /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "répertoire_temporaire/id_rsa.pub" /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'root@ip_de_la_machine_virtuelle'" and check to make sure that only the key(s) you wanted were added.
- Connectez-vous sur la machine virtuelle pour vérifier que la nouvelle clé publique est bien présente
ssh root@ip_de_la_machine_virtuelle
- Vérifiez les clés autorisées
cat .ssh/authorized_keys
Remarque importanteLa clé privée
id_rsa
doit rester secrète, ne la diffusez pas et ne la laissez pas accessible à d'autres. - Supprimez la clé publique du répertoire temporaire
- Sur l'ordinateur qui souhaite pouvoir se connecter à la machine virtuelle, testez la connexion
ssh root@ip_de_la_machine_virtuelle
Remarque importanteSi votre ordinateur personnel est sur Windows, vous pouvez utiliser PuTTY pour vous connecter à la machine distante, à condition de convertir la clé privée
id_rsa
dans un format reconnu par ce logiciel. - Pour accéder au cloud OpenNebula du département informatique depuis chez vous, vous aurez besoin d'utiliser le VPN Remarque importante
Connectez-vous sur https://iut-info.univ-reims.fr/vpn/ pour obtenir les informations de configuration du VPN (bouton « Connexion » en haut à droite)