Jérôme Cutrona

Version statique de l'intranet de Jérôme Cutrona - Rejoindre la version dynamique 🔒

Les exemples et corrections sont potentiellement non fonctionnels.

B.U.T. Informatique - IUT de Reims - Université de Reims

Déploiement d'une machine virtuelle Ubuntu sur OpenNebula

Navigation

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é.

Travail à réaliser
  1. 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
  2. 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 importante

    Utilisez une passphrase pour protéger la clé privée.

  3. Observez les fichiers générés :
    ls ~/.ssh/
    id_rsa id_rsa.pub
  4. 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 importante

    La clé privée ~/.ssh/id_rsa doit rester secrète.

  5. 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.

Travail à réaliser
  1. Rendez-vous sur http://cloud/ et connectez-vous avec votre compte universitaire accéder à l'interface de OpenNebula
  2. Localisez le menu permettant d'accéder à vos préférences accéder aux préférences de OpenNebula
  3. Cliquez sur le menu d'ajout d'une clé SSH publique ajouter une clé SSH publique
  4. Copiez la clé publique (contenu du fichier ~/.ssh/id_rsa.pub) et collez-la dans le champ dédié de l'interface de OpenNebula ajouter la nouvelle clé SSH publique
  5. 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.

Travail à réaliser
  1. Localisez le bouton d'ajout d'une machine virtuelle sur le tableau de bord OpenNebula bouton d'ajout d'une machine virtuelle sur le tableau de bord OpenNebula
  2. Observez les modèles disponibles modèles de machines virtuelles disponibles
  3. Trouvez le modèle correspondant à votre choix, « Ubuntu Minimal 22.04 » est donné à titre d'exemple modèle de machine virtuelle pour Ubuntu 20.04
  4. 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 » nom et taille du disque dur de la machine virtuelle
  5. La machine virtuelle est en cours de déploiement (indicateur orange), vous pouvez cliquer sur son nom pour plus de détails machine virtuelle en cours de déploiement
  6. Repérez l'adresse IP de la machine virtuelle dans les détails de ses statistiques VirtualBox installation Xubuntu

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.

Travail à réaliser
  1. 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:~#
    
  2. 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
    
  3. 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.

Travail à réaliser
  1. Ouvrez un shell sur l'ordinateur qui souhaite pouvoir se connecter à la machine virtuelle
  2. 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 commande ssh-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é
  3. Localisez la clé publique et son contenu :
    cat ~/.ssh/id_rsa.pub
  4. Copiez la clé publique « id_rsa.pub » pour la transférer à une personne ayant la capacité de se connecter à la machine virtuelle
  5. Sur l'ordinateur ayant déjà accès à la machine virtuelle, récupérez la nouvelle clé publique dans un répertoire temporaire
  6. 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.
  7. 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
  8. Vérifiez les clés autorisées
    cat .ssh/authorized_keys
    Remarque importante

    La clé privée id_rsa doit rester secrète, ne la diffusez pas et ne la laissez pas accessible à d'autres.

  9. Supprimez la clé publique du répertoire temporaire
  10. Sur l'ordinateur qui souhaite pouvoir se connecter à la machine virtuelle, testez la connexion
    ssh root@ip_de_la_machine_virtuelle
    Remarque importante

    Si 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.

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