Nous allons expérimenter ensemble la création de conteneurs LXC dans Proxmox VE afin de mettre en place une machine qui aura un rôle particulier dans notre homelab : la machine de déploiement.

Pourquoi une machine de déploiement ?

Cette machine de déploiement n’est pas ma machine quotidienne (i7) mais un conteneur LXC sur Proxmox VE dans lequel tourne Ubuntu 24.04 LTS. Pourquoi ce choix ? Ma machine quotidienne tourne sous Windows 11… et je n’ai pas envie de gérer le déploiement depuis cette machine… je préfère travailler dans un environnement assez homogène sous Linux. Utiliser un conteneur LXC permettra aussi de gérer facilement à l’aide de Proxmox VE les sauvegardes de cette machine au rôle important dans notre homelab.

Installation pas à pas de Ubuntu 24.04 LTS dans un conteneur LXC sur Proxmox VE

Cette installation va s’effectuer cette fois, sans utiliser les scripts de ttech.

Méthode 1 : via l’interface graphique de Proxmox VE

L’appui sur le bouton “Créer un conteneur” permet d’afficher une fenêtre à plusieurs onglets permettant de créer votre machine

(…)

Méthode 2 : en console avec pveam et pct

root@opti-7010:~# pveam download local ubuntu-24.04-standard_24.04-2_amd64.tar.zst
downloading http://download.proxmox.com/images/system/ubuntu-24.04-standard_24.04-2_amd64.tar.zst to /var/lib/vz/template/cache/ubuntu-24.04-standard_24.04-2_amd64.tar.zst
calculating checksum of existing file...OK, got correct file already, no need to download

Nous avons déjà ce modèle de conteneur (sinon pveam available pour voir la liste)

Essayons de créer un conteneur de VMID 999 (numéro de conteneur ou de VM) à partir du modèle ubuntu-24.04-standard_24.04-2_amd64.tar.zst stocké sur le storage local

root@opti-7010:~# pct create 999 local:vztmpl/ubuntu-24.04-standard_24.04-2_amd64.tar.zst
400 Parameter verification failed.
storage: storage 'local' does not support container directories
pct create <vmid> <ostemplate> [OPTIONS]

Cela ne fonctionne pas

La création d’un conteneur LXC dans Proxmox nécessite une configuration appropriée du stockage. L’erreur que nous rencontrons indique que le stockage ‘local’ n’est pas configuré pour prendre en charge les répertoires de conteneurs. Il est nécessaire de passer le paramètre storage pour éviter cela. Passons par exemple le paramètre --local local-lvm

root@opti-7010:~# pct create 999 local:vztmpl/ubuntu-24.04-standard_24.04-2_amd64.tar.zst --storage local-lvm
  Logical volume "vm-999-disk-0" created.
Creating filesystem with 1048576 4k blocks and 262144 inodes
Filesystem UUID: e1eebb3b-d0cc-4bf2-8b3d-8b388e7aeb5d
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736
extracting archive '/var/lib/vz/template/cache/ubuntu-24.04-standard_24.04-2_amd64.tar.zst'
Total bytes read: 564490240 (539MiB, 780MiB/s)
Detected container architecture: amd64
Creating SSH host key 'ssh_host_dsa_key' - this may take some time ...
done: SHA256:mE2mT0u3fJmmlc6yuqznk9ZnRq8JtFMinSLntVbBxAI root@localhost
Creating SSH host key 'ssh_host_ecdsa_key' - this may take some time ...
done: SHA256:0KY0yBzewPr5QedZXT1bnG8dVgx3zlL8IW3CeQAkqH8 root@localhost
Creating SSH host key 'ssh_host_ed25519_key' - this may take some time ...
done: SHA256:32qaKDHTcclpf8oa+T00i6AfFHVK6MY9NcQ0zbD3+zQ root@localhost
Creating SSH host key 'ssh_host_rsa_key' - this may take some time ...
done: SHA256:VcnT88qkHgAAcawIF5ASc7t/HvWyZTfG6VDmrzG9nnM root@localhost
root@opti-7010:~# pct config 999
arch: amd64
hostname: CT999
memory: 512
ostype: ubuntu
rootfs: local-lvm:vm-999-disk-0,size=4G
swap: 512

Nous voyons que lors de la création du conteneur des clés cryptographiques ont été créées mais que le conteneur ne peut utiliser que 512 Mo de mémoire et 4 Go de disque.

Vous pouvez ajouter d’autres options lors de la création du conteneur, comme la mémoire, le CPU, les paramètres réseau, le nom d’hôte, la taille du disque etc. Nous allons supprimer le conteneur qui avait été créé précédemment… mais c’est également possible de faire cette modification après coup.

Par exemple :

root@opti-7010:~# pct destroy 999
  Logical volume "vm-999-disk-0" successfully removed.
root@opti-7010:~# pct create 999 local:vztmpl/ubuntu-24.04-standard_24.04-2_amd64.tar.zst \
  --ostype ubuntu \
  --storage local-lvm \
  --memory 2048 \
  --cores 2 \
  --swap 512 \
  --net0 name=eth0,bridge=vmbr0,ip=dhcp \
  --hostname ubuntu-deploy \
  --unprivileged 1 \
  --features nesting=1,keyctl=1 \
  --onboot 1 \
  --rootfs local-lvm:20 \
  --tags deployment-machine \
  --ssh-public-keys /root/.ssh/id_ed25519.pub \
  --password YourPassword
  Logical volume "vm-999-disk-0" created.
Creating filesystem with 1048576 4k blocks and 262144 inodes
Filesystem UUID: 48151875-ddb0-4152-a720-a8cc670d3644
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736
extracting archive '/var/lib/vz/template/cache/ubuntu-24.04-standard_24.04-2_amd64.tar.zst'
Total bytes read: 564490240 (539MiB, 786MiB/s)
Detected container architecture: amd64
Creating SSH host key 'ssh_host_dsa_key' - this may take some time ...
done: SHA256:z5/sPfL2009ZTNJ6F8H/8zf3B4szHSJHHZGB02Y4Pbw root@localhost
Creating SSH host key 'ssh_host_ed25519_key' - this may take some time ...
done: SHA256:ErCjstpEXQBDxmPCHpNzNyk+r+yOQpY8pnZ2PO1FQLY root@localhost
Creating SSH host key 'ssh_host_rsa_key' - this may take some time ...
done: SHA256:LUtnaKlIknVwdYM2hlSWE4fOdUuA5a8cSserosc2MBo root@localhost
Creating SSH host key 'ssh_host_ecdsa_key' - this may take some time ...
done: SHA256:1RDqPgC4RfkAXxdYdx1Tge6sC7mhzMONBLtsMwQJ69g root@localhost

pct list permet de voir la liste et le statut de l’ensemble des conteneurs du nœud Proxmox VE

root@opti-7010:~# pct list
VMID       Status     Lock         Name                
999        stopped                 CT999

Accès à la machine de déploiement

Depuis l’hôte Proxmox

Utilisation de la commande pct

Depuis l’hôte Proxmox, démarrons le conteneur 999, entrons dedans, et vérifions la connectivité réseau.

root@opti-7010:~# pct start 999; pct enter 999  # on démarre le conteneur et on entre dedans
root@ubuntu-deploy:~# ip addr 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: eth0@if20: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether bc:24:11:ba:d9:ca brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 192.168.1.83/24 metric 1024 brd 192.168.1.255 scope global dynamic eth0
       valid_lft 86132sec preferred_lft 86132sec
    inet6 fe80::be24:11ff:feba:d9ca/64 scope link 
       valid_lft forever preferred_lft forever

Mettons à jour les paquets.

root@ubuntu-deploy:~# apt update
root@ubuntu-deploy:~# apt upgrade
root@ubuntu-deploy:~# apt dist-upgrade

Installations les locales

root@ubuntu-deploy:~# apt-get install language-pack-fr
root@ubuntu-deploy:~# dpkg-reconfigure locales

Ressortons du conteneur et voyons les différentes manière de réentrer dedans. (hormis pct enter 999 depuis l’hôte Proxmox)

Exécution d’une commande dans le conteneur depuis l’hôte Proxmox

pct exec <id> -- touch /root/hello_from_host

Permet par exemple de créer un fichier hello_from_host sur le conteneur.

Connexion SSH depuis l’hôte Proxmox

Il est possible de se connecter en SSH depuis l’hôte Proxmox

root@opti-7010:~# ssh root@192.168.1.83
The authenticity of host '192.168.1.83 (192.168.1.83)' can't be established.
ED25519 key fingerprint is SHA256:0e/lH9WNobGnW1UBt9Hm7t7oYB6mUexLGvjXJQSjoOE.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.1.83' (ED25519) to the list of known hosts.
Welcome to Ubuntu 24.04.1 LTS (GNU/Linux 6.8.12-2-pve x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

root@ubuntu-deploy:~# 

Cette connexion utilise la clé privée /root/.ssh/id_ed25519 présente sur l’hôte Proxmox… Nous n’avons pas besoin de saisir le mot de passe.

Vérifions la configuration du serveur SSH dans ce conteneur.

root@ubuntu-deploy:~# nano /etc/ssh/sshd_config

(attention n’oubliez pas le “d” … c’est bien sshd_config le fichier de configuration du serveur SSH, et ssh_config le fichier de configuration du client SSH)

Il est recommandé de “durcir” un peu cette configuration SSH. Pas de connexion SSH en tant que root (surtout pas avec mot de passe). L’objectif de cet article n’est pas de développer cette partie mais vous trouverez beaucoup d’information sur ce sujet sur internet.

Depuis votre machine de développement / machine quotidienne

Comme je l’ai indiqué précédemment ma machine quotidienne / machine de développement tourne sous Windows 11. Je souhaite configurer l’accès par cette machine à la machine de déploiement ubuntu-deploy.

Nous n’utilisons pas de mot de passe pour nous connecter en SSH sur cette machine mais des paires de clés cryptographiques (clé publique / clé privée).

Génération des clés

Sous Windows, les clés SSH doivent être stockées dans un emplacement spécifique et avec des permissions appropriées.

Parmi les bonnes pratiques, citons l’usage d’un emplacement standard pour stocker les clés SSH sous Windows : C:\Users\VotreNomUtilisateur\.ssh\ ou en notation Windows : %USERPROFILE%\.ssh\

La structure recommandée du dossier .ssh est la suivante :

.ssh/
├── id_ed25519          # Clé privée
├── id_ed25519.pub      # Clé publique
├── config              # Configuration SSH
└── known_hosts         # Hôtes connus

L’outil ssh-keygen permet de créer pour notre machine une paire de clés

C:\Users\scelles> ssh-keygen
Generating public/private ed25519 key pair.
Enter file in which to save the key (C:\Users\scelles/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in C:\Users\scelles/.ssh/id_ed25519
Your public key has been saved in C:\Users\scelles/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:+P7Y3vxZuXe+ZBZI312O3PdpBBMx/HHbeuxYZ7szjJs scelles@PORT-SCELLES
The key's randomart image is:
+--[ED25519 256]--+
|            .+.  |
|             .o..|
|             +. *|
|       .    ..=*=|
|      . S    .o**|
|       .      o %|
|        .     o&=|
|       . o o .BB=|
|        oo+ oE+=O|
+----[SHA256]-----+

Il est important de protéger notre clé privée en définissant une passphrase.

Nous pouvons observer que lors de la génération des clés un randomart apparait. Il s’agit d’un représentation visuelle unique générée à partir d’une clé cryptographique, souvent utilisée dans le contexte de SSH (Secure Shell). Le randomart est composé de caractères ASCII formant un motif unique dans un cadre.

  1. Le cadre indique le type de clé (ED25519 256 bits) et l’algorithme de hachage utilisé (SHA256).
  2. Le motif à l’intérieur est créé à partir de la clé cryptographique elle-même.
  3. Les caractères utilisés (., o, +, =, etc.) et leur position forment un motif spécifique à cette clé particulière.
  4. Si la même clé est utilisée à nouveau, elle générera exactement le même randomart, permettant une vérification visuelle rapide.
  5. Un changement, même minime, dans la clé produirait un motif très différent.

Sauvegarde sécurisée : Exportez uniquement la clé privée vers un stockage sécurisé Utilisez un gestionnaire de mots de passe pour stocker une copie chiffrée Ne stockez jamais les clés privées dans le cloud non chiffré.

Afin de pouvoir se connecter en SSH depuis la machine (physique) de développement à la machine de déploiement (conteneur LXC ubuntu-deploy), il faut ajouter la clé publique id_ed25519.pub parmi les clés autorisées dans le conteneur LXC ubuntu-deploy.

Sur votre machine Windows, dans PowerShell, copiez le contenu complet de votre clé publique dans le presse-papier :

Get-Content "$env:USERPROFILE\.ssh\id_ed25519.pub" | Set-Clipboard

Dans le conteneur il suffit alors de faire :

nano ~/.ssh/authorized_keys

et coller cette clé publique ssh-ed25519.... dedans

On peut alors tester depuis Windows la connexion SSH.

Test de connexion en ligne de commande

> ssh root@192.168.1.83
hostkeys_find_by_key_hostfile: hostkeys_foreach failed for C:\\Users\\scelles/.ssh/known_hosts: Permission denied
The authenticity of host '192.168.1.83 (192.168.1.83)' can't be established.
ED25519 key fingerprint is SHA256:0e/lH9WNobGnW1UBt9Hm7t7oYB6mUexLGvjXJQSjoOE.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Failed to add the host to the list of known hosts (C:\\Users\\scelles/.ssh/known_hosts).
Enter passphrase for key 'C:\Users\scelles/.ssh/id_ed25519':
client_input_hostkeys: hostkeys_foreach failed for C:\\Users\\scelles/.ssh/known_hosts: Permission denied
Welcome to Ubuntu 24.04.1 LTS (GNU/Linux 6.8.12-2-pve x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro
Last login: Tue Oct 22 09:33:38 2024 from 192.168.1.6
root@ubuntu-deploy:~#

Connexion SSH depuis Visual Studio Code

Il est possible d’ouvrir une connexion distante via SSH à notre conteneur de déploiement depuis notre machine de développement et travailler avec cet éditeur de texte pour éditer des fichiers directement sur votre conteneur de déploiement.

Ouvrir un fenêtre distante puis taper ssh. Cela doit installer l’extension. Choisir Connect to Host… (Remote-SSH)

ajouter un nouvel hôte SSH…

ssh root@192.168.1.83

Sélectionner le fichier de configuration SSH à mettre à jour

Cliquer sur Se connecter puis répondre aux questions posées (type d’hôte Linux, Windows, Mac), acceptation de l’empreinte, … Vous devez en bas à gauche voir que VS code est désormais connecté à notre machine de déploiement via SSH Vous pouvez avoir, dans VS Code, une vue de l’explorateur de fichiers, une vue de l’éditeur et un terminal.

Création d’un nouvel utilisateur

L’utilisation du compte root n’est pas une bonne pratique. Il est préférable d’utiliser un compte plus limité.

root@ubuntu-deploy:~# adduser deployer
info: Adding user `deployer' ...
info: Selecting UID/GID from range 1000 to 59999 ...
info: Adding new group `deployer' (1000) ...
info: Adding new user `deployer' (1000) with group `deployer (1000)' ...
info: Creating home directory `/home/deployer' ...
info: Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for deployer
Enter the new value, or press ENTER for the default
        Full Name []:
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n]
info: Adding new user `deployer' to supplemental / extra groups `users' ...
info: Adding user `deployer' to group `users' ...

Notre utilisateur deployer appartient au groupe users nous allons le rajouter au groupe des sudoers.

L’intérêt d’ajouter un utilisateur au groupe sudoers présente plusieurs aspects importants de sécurité et d’administration système :

  1. Sécurité :
  • Évite l’utilisation directe du compte root
  • Garde une trace (logs) de qui exécute les commandes privilégiées
  • Permet de donner des droits administratifs sans partager le mot de passe root
  • Permet de révoquer les droits facilement si nécessaire
  1. Gestion des accès :
  • Permission d’exécuter des commandes nécessitant des privilèges élevés
  • Possibilité de limiter les commandes autorisées pour chaque utilisateur
  • Gestion granulaire des droits d’administration
  1. Bonnes pratiques :
  • Respecte le principe du moindre privilège
  • Suit les recommandations de sécurité standard
  • Facilite l’audit de sécurité
  1. Cas d’usage typique pour “deployer” :
  • Déploiement d’applications nécessitant des droits root
  • Installation de packages
  • Gestion des services système
  • Configuration du serveur
  1. Traçabilité :
  • Chaque commande sudo est enregistrée dans les logs
  • On sait qui a fait quoi et quand
  • Facilite le débogage en cas de problème

En résumé, c’est un équilibre entre sécurité et facilité d’administration, particulièrement important dans un contexte de déploiement d’applications.

root@ubuntu-deploy:~# groups deployer
deployer : deployer users
root@ubuntu-deploy:~# adduser deployer sudo
info: Adding user `deployer' to group `sudo' ...
root@ubuntu-deploy:~# groups deployer
deployer : deployer sudo users

On copie les clés publiques autorisée de l’utilisateur root à l’utilisateur deployer

mkdir -p /home/deployer/.ssh && cp /root/.ssh/authorized_keys /home/deployer/.ssh/ && chown -R deployer:deployer /home/deployer/.ssh && chmod 700 /home/deployer/.ssh && chmod 600 /home/deployer/.ssh/authorized_keys

On peut vérifier qu’il est possible avec notre nouvel utilisateur deployer de se connecter en SSH depuis notre machine de développement à la machine de déploiement.

C:\Users\Admin> ssh deployer@192.168.1.83
Enter passphrase for key 'C:\Users\Admin/.ssh/id_ed25519':
Welcome to Ubuntu 24.04.1 LTS (GNU/Linux 6.8.12-2-pve x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

deployer@ubuntu-deploy:~$ sudo -s
[sudo] password for deployer:
root@ubuntu-deploy:/home/deployer#

Installation de Julia sur la machine de déploiement

Nous allons reprendre l’installation de Julia sur notre machine de déploiement (conteneur LXC Ubuntu 24.04 sur Proxmox VE pour rappel).

root@ubuntu-deploy:/home/deployer# apt install curl
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  libbrotli1 libcurl4t64 libldap-common libldap2 librtmp1 libssh-4
The following NEW packages will be installed:
  curl libbrotli1 libcurl4t64 libldap-common libldap2 librtmp1 libssh-4
0 upgraded, 7 newly installed, 0 to remove and 3 not upgraded.
Need to get 1369 kB of archives.
After this operation, 3637 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://archive.ubuntu.com/ubuntu noble/main amd64 libbrotli1 amd64 1.1.0-2build2 [331 kB]

(...)

root@ubuntu-deploy:/home/deployer# exit
deployer@ubuntu-deploy:~$ curl -fsSL https://install.julialang.org | sh

info: downloading installer
Welcome to Julia!

This will download and install the official Julia Language distribution
and its version manager Juliaup.

Juliaup will be installed into the Juliaup home directory, located at:

  /home/deployer/.juliaup

The julia, juliaup and other commands will be added to
Juliaup's bin directory, located at:

  /home/deployer/.juliaup/bin

This path will then be added to your PATH environment variable by
modifying the profile files located at:

  /home/deployer/.bashrc
  /home/deployer/.profile

Julia will look for a new version of Juliaup itself every 1440 minutes when you start julia.

You can uninstall at any time with juliaup self uninstall and these
changes will be reverted.

✔ Do you want to install with these default configuration choices? · Proceed with installation

Now installing Juliaup
Installing Julia 1.11.1+0.x64.linux.gnu
Configured the default Julia version to be 'release'.
Julia was successfully installed on your system.

Depending on which shell you are using, run one of the following
commands to reload the PATH environment variable:

  . /home/deployer/.bashrc
  . /home/deployer/.profile

deployer@ubuntu-deploy:~$ source ~/.bashrc
deployer@ubuntu-deploy:~$ julia --version
julia version 1.11.1

Julia est désormais installé sur notre machine de déploiement et est bien accessible à notre utiliser deployer.

Sécurisation (minime) de SSHd

Actuellement il est possible de se connecter à notre machine de déploiement en SSH à la fois avec le compte root et avec le compte deployer (vérifiez cela en testant ssh deployer@ip_machine_deploiement et ssh root@ip_machine_deploiement). Nous allons supprimer à root l’accès SSH Editer le fichier sshd_config

root@ubuntu-deploy:~# nano /etc/ssh/sshd_config

Au dessus de la ligne commentée

#PermitRootLogin prohibit-password

tapez

PermitRootLogin no

ajoutez également (ou décommentez)

PubkeyAuthentication yes
PasswordAuthentication no

Redémarrez le serveur SSH à l’aide de systemd

root@ubuntu-deploy:~# systemctl restart sshd

Testez

> ssh root@192.168.1.83
Enter passphrase for key 'C:\Users\Admin/.ssh/id_ed25519':
root@192.168.1.83: Permission denied (publickey).

root ne peut plus se connecter en SSH. D’autres points pourrait être mis en place comme limiter les tentatives de connexion (MaxAuthTries), définir un timeout, limiter les versions du protocole SSH, spécifier les utilisateurs autorisés, ne pas écouter sur le port standard 22, configurer fail2ban …)

J’ai perdu la/les clé(s) privées permettant d’accéder à la machine de déploiement

Les clés publiques autorisées pour se connecter en tant qu’utilisateur deployer sont présentes dans /home/deployer/.ssh/authorized_keys. Si vous avez perdu la ou les clés privées correspondant à ces clés publiques il reste encore une solution :

  • accédez au Shell Proxmox VE en tant que root sur votre noeud
  • entrez en tant que root dans le conteneur de déploiement
  • observez les permissions sur les fichiers du répertoire /home/deployer/.ssh/
  • modifier le fichier en ajoutant la clé publique que vous voulez.
  • assurez vous de corriger le propriétaire et le groupe ainsi que les permissions du fichier si elles sont incorrectes
root@opti-7010:~# pct enter 999
root@ubuntu-deploy:~# ls /home/deployer/.ssh/ -la
total 28
drwx------  2 deployer deployer 4096 Oct 23 20:52 .
drwxr-x--- 14 deployer deployer 4096 Oct 23 19:17 ..
-rw-------  1 deployer deployer 1177 Oct 23 19:18 authorized_keys
-rw-------  1 deployer deployer  464 Oct 22 14:53 id_ed25519
-rw-r--r--  1 deployer deployer  104 Oct 22 14:53 id_ed25519.pub
-rw-------  1 deployer deployer 1546 Oct 23 20:52 known_hosts
root@ubuntu-deploy:~# nano /home/deployer/.ssh/authorized_keys
root@ubuntu-deploy:~# chown deployer:deployer /home/deployer/.ssh/authorized_keys
root@ubuntu-deploy:~# chmod 600 /home/deployer/.ssh/authorized_keys

Documentez

Il est important de prendre des notes pour mémoriser les éléments importants de votre infrastructure. A titre personnel, je prends beaucoup de notes dans Obsidian mais vous pouvez aussi utiliser le champ “Notes” de Proxmox VE. Exemple de notes (en Markdown)

# Machine de déploiement

## Rôle

Permet de déployer des calculs en Julia sur plusieurs conteneurs LXC

## Principaux logiciels

Julia, Terraform, Ansible, ...

## Accès SSH

### pas d'accès `root`

### utilisateur `deployer`

connexion par paire de clés SSH (pas d'accès par mot de passe)

proxmoxve