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é.
- Si vous n'en avez pas déjà un, générez votre 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 votre clé privée.
InformationSi vous travaillez en groupe de projet, vous pouvez générer une clé privée pour le groupe et vous la partager, sans pour autant écraser votre propre clé privée. 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/nom_de_la_clé
permet de générer les fichiers «~/.ssh/nom_de_la_clé
» et «~/.ssh/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é avec l'option «-i
». - Observez les fichiers générés :
ls ~/.ssh/ id_rsa id_rsa.pub
- Vérifiez que votre clé privée est bien lisible de vous seul :
la -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 importanteVotre clé privée
~/.ssh/id_rsa
doit rester secrète. - Si votre 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. Votre 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 votre clé publique (contenu du fichier
~/.ssh/id_rsa.pub
) et collez-la dans le champ dédié de l'interface de OpenNebula - Validez votre saisie en appuyant sur « Add SSH Key »
Déployer une machine virtuelle OpenNebula ¶
Votre clé publique étant connu 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 à votre machine virtuelle et fixez la taille de son disque dur puis validez à l'aide du bouton « Create »
- Votre 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 votre machine virtuelle dans les détails de ses statistiques
Connexion SSH à la machine virtuelle grâce à la clé ¶
La génération de votre couple de clés et la saisie de votre 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_votre_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 souhaitez travailler depuis votre domicile en VPN, vous ne posséderez pas la clé privée stockée sur votre PC Linux du département informatique. Vous allez donc générer un nouveau couple de clés et les emporter chez vous.
- Ouvrez un shell sur votre machine locale
- Générez un nouveau couple de clés dans le répertoire
Documents
ssh-keygen -t rsa -f ~/Documents/id_rsa Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/Users/cutron01/Documents/id_rsa Your public key has been saved in /home/Users/cutron01/Documents/id_rsa.pub The key fingerprint is: SHA256:jsXNyf/uh7wwtQjvgfqEU33ezygTNkT5ufVhsx96iWE cutron01@2A4F1-31UPC05a The key's randomart image is: +---[RSA 3072]----+ | . | | o | | . . . | | .=.+*.. + | | o S.==.o + | | o .+ +=+.Eo. | | o. o.*+==+.o| | .o .o*+o+o.| | .. .++o. | +----[SHA256]-----+
Remarque importanteUtilisez une passphrase pour protéger votre clé privée.
- Enregistrez votre nouvelle clé publique sur la machine distante à l'aide de la commande
ssh-copy-id
ssh-copy-id -i ~/Documents/id_rsa.pub root@ip_de_votre_machine_virtuelle /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/Users/cutron01/Documents/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@10.31.5.122'" and check to make sure that only the key(s) you wanted were added.
- Connectez-vous sur la machine distante pour vérifier que votre nouvelle clé publique est bien présente
ssh root@ip_de_votre_machine_virtuelle
- Vérifiez les clés autorisées
cat .ssh/authorized_keys
- Copiez les nouvelles clés publique et privée sur une clé USB et supprimez-les de votre compte au département informatique Remarque importante
Votre clé privée
id_rsa
doit rester secrète, ne la diffusez pas et ne la laissez pas accessible à d'autres. - Une fois sur votre ordinateur personnel, placez les fichiers
id_rsa
etid_rsa.pub
de la clé USB dans le répertoire.ssh
de votre compte Linux localRemarque importanteSi votre ordinateur personnel est sur Windows, vous pouvez utiliser PuTTY pour vous connecter à la machine distante, à condition de convertir votre 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)