Skip to content
Snippets Groups Projects
Commit 0095024e authored by Matisse DEKEISER's avatar Matisse DEKEISER
Browse files

Ajout procédures partie 1 et modifications légères

parent 3c586d31
No related branches found
No related tags found
No related merge requests found
Showing
with 771 additions and 40 deletions
À FAIRE
\ No newline at end of file
# 1.4: Connexion au terminal de la machine virtuelle
Une fois la machine virtuelle démarrée, nous allons accéder à un terminal distant afin de configurer par la suite le réseau, les outils nécessaires ainsi que l'instance de Matrix.
## 🖵 Serial console via X11
Le script `vmiut` est doté d'une commande pour afficher la console de la machine virtuelle via VirtualBox:
```
user@virt $ vmiut console matrix
```
Seul problème: étant donné que cette commande lance une fenêtre graphique de VirtualBox sous X11, alors que nous sommes connectés au serveur de virtualisation via `ssh`, il nous est impossible d'avoir accès à la fenêtre:
```
UI(error): ui_init(), failed to open X11 display:
```
Pour palier à ce problème, nous utiliserons une option du programme `ssh`: `-X`.
`-X` permet la redirection de fenêtres X11 via le protocole SSH.
Ainsi, connectons nous au serveur de virtualisation avec la redirection X11:
```
user@phys $ ssh -X dattier.iutinfo.fr
```
Et nous pouvons ainsi accéder au terminal de la machine virtuelle via fenêtre graphique VirtualBox:
```
user@virt $ vmiut console matrix
```
![Console serial via redirection X11](/resources/serial-console.png)
## ⌨️ Connexion SSH classique
Sur la machine virtuelle tourne un service [`sshd`](https://man.openbsd.org/sshd) (*ssh daemon*) qui nous permet de se connecter à la machine virtuelle de manière plus conventionnelle.
Par défaut, la machine virtuelle démarre avec une adresse IP locale fournie via DHCP. Ceci est un détail qui nous sera important pour la partie suivante sur la **configuration réseau** de la machine virtuelle, où nous changerons cette IP générée automatique par une IP statique dans notre plage d'adresses allouée.
Une fois la machine virtuelle démarée, vous pourrez voir son IP actuelle à l'aide de la commande:
```
user@virt $ vmiut info matrix
```
Tout en bas des informations, vous verrez une ligne `ip-possible`:
```
ip-possible=10.42.70.181
```
Si cette ligne n'est pas suivie d'une adresse IP, il faut attendre ~1min le temps que la machine virtuelle démarre complètement et aie le temps de recevoir une adresse IP via DHCP:
```
ip-possible=
```
Maintenant que vous avez cette adresse IP, vous pouvez vous connecter à la machine virtuelle via `ssh`, à l'utilisateur standard `user` (vu dans le modèle de la machine virtuelle sur la [page précédente](create-virtual-machine.md)):
```
user@phys $ ssh user@10.42.70.181
The authenticity of host '10.42.70.181 (10.42.70.181)' can't be established.
ED25519 key fingerprint is SHA256:5CmKzEIqY6qbp0w+sXfHe7/jUDjsPtySwcioO5+BeVo.
This host key is known by the following other names/addresses:
~/.ssh/known_hosts:1: [hashed name]
~/.ssh/known_hosts:4: [hashed name]
~/.ssh/known_hosts:5: [hashed name]
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.42.70.181' (ED25519) to the list of known hosts.
user@10.42.70.181's password:
Linux debian 6.1.0-13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.55-1 (2023-09-29) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
user@debian:~$
```
### 📚 Plus d'informations sur les outils mentionnés dans cette procédure:
- [La documentation de OpenSSH par OpenBSD](https://www.openssh.com/manual.html)
<hr>
- Page précédente: [Création et gestion de la machine virtuelle](create-virtual-machine.md)
- Page suivante: [Configuration réseau et mise à jour](setup-virtual-network.md)
\ No newline at end of file
À FAIRE
\ No newline at end of file
# 1.1: Connexion à distance au serveur de virtualisation
Tous les étudiants disposent d'un accès à un serveur de virtualisation, là où toutes les machines virtuelles de ce projet seront hébergées.
## 💻 Première connexion
Pour se connecter au serveur de virtualisation, nous allons utiliser la commande [`ssh`](https://man.openbsd.org/ssh):
```
user@phys $ ssh dattier.iutinfo.fr
```
Lors de la première connexion à une machine via `ssh`, vous serez averti de vérifier l'empreine du serveur distant:
```
The authenticity of host 'dattier.iutinfo.fr (172.18.48.20)' can't be established.
ED25519 key fingerprint is SHA256:QynRpdPucTVcwhMrD3824pqUviVFCgPwxwhkDyGyVSg.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
```
Tableau des empreintes du serveur `dattier.iutinfo.fr`:
| Taille de la clé | Empreinte | Machine | Algorithme |
|------------------|----------------------------------------------------|--------------------|------------|
| 3072 | SHA256:mPCb5nJD8F6YOg/aDCRjqF/ZW3Ei9iLpzXw5UDCIH8g | dattier.iutinfo.fr | RSA |
| 256 | SHA256:+XNYpzmoYKDnwaB1xqCA2Yu7mBZEK5zvtfXYw1zDO1Y | dattier.iutinfo.fr | ECDSA |
| 256 | SHA256:QynRpdPucTVcwhMrD3824pqUviVFCgPwxwhkDyGyVSg | dattier.iutinfo.fr | ED25519 |
<hr>
### 💡 Note:
Commande pour voir les empreintes SSH d'un serveur distant:
```
user@phys $ ssh-keyscan [host] | ssh-keygen -lf -
```
Exemple:
```
$ ssh-keyscan dattier.iutinfo.fr | ssh-keygen -lf -
# dattier.iutinfo.fr:22 SSH-2.0-OpenSSH_9.2p1 Debian-2+deb12u3
3072 SHA256:mPCb5nJD8F6YOg/aDCRjqF/ZW3Ei9iLpzXw5UDCIH8g dattier.iutinfo.fr (RSA)
256 SHA256:+XNYpzmoYKDnwaB1xqCA2Yu7mBZEK5zvtfXYw1zDO1Y dattier.iutinfo.fr (ECDSA)
256 SHA256:QynRpdPucTVcwhMrD3824pqUviVFCgPwxwhkDyGyVSg dattier.iutinfo.fr (ED25519)
```
<hr>
Étant donné que l'empreinte du serveur donnée par la commande `ssh` est similaire à celle dans le tableau, nous pouvons accepter la connexion en écrivant `yes`:
```
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
```
Vous serez par la suite demandés à écrire votre mot de passe:
```
user@dattier.iutinfo.fr's password:
```
<hr>
### 💡 Note:
Par raison de sécurité, les mots de passe ne sont pas affichés en clair sur les systèmes UNIX, vous ne verrez donc pas votre mot de passe en train d'être écrit sur votre terminal.
<hr>
Une fois le mot de passe correctement saisi, vous serez accueilli par un message ainsi qu'un shell au serveur de virtualisation:
```
Linux dattier 6.1.0-22-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.94-1 (2024-06-21) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Dec 10 10:15:06 2024 from 172.18.49.3
user@dattier:~$
```
### 📚 Plus d'informations sur les outils mentionnés dans cette procédure:
- [La documentation de OpenSSH par OpenBSD](https://www.openssh.com/manual.html)
<hr>
- Page précédente: [Sommaire](README.md)
- Page suivante: [Gestion des clés de connexion SSH](ssh-keygen.md)
\ No newline at end of file
À FAIRE
\ No newline at end of file
# 1.3: Création et gestion de la machine virtuelle
Maintenant que nous sommes connectés au serveur de virtualisation, nous allons pouvoir nous occuper de la machine virtuelle. Pour cela, nous utiliserons un script dédié à la gestion de machines virtuelles sur les ordinateurs et serveurs de l'IUT, communiquant avec [VirtualBox](https://www.virtualbox.org/): `vmiut`.
`vmiut` se charge de faciliter au maximum la création et la gestion de machines virtuelles à partir de modèles VirtualBox pré-fabriqués.
## 💾 Création de la machine virtuelle
Pour ce projet, nous utiliserons une machine virtuelle avec ces caractéristiques:
- **Distribution**: Debian GNU/Linux 12 "Bookworm", x86-64
- **Utilisateur standard** (`username:password`): `user:user`
- **Administrateur** (`username:password`): `root:root`
- **Empreintes des clés SSH du modèle**:
| Taille de la clé | Empreinte | Algorithme |
|------------------|----------------------------------------------------|------------|
| 3072 | SHA256:C+oy3vfY9fGCAmwzHCUADu75cFUiOGpp7Y5/zOLJIB4 | RSA |
| 256 | SHA256:jq4fycPE9bXnOsphH/mkP0ue3KLQP4WEFmXDuYCpLf0 | ECDSA |
| 256 | SHA256:5CmKzEIqY6qbp0w+sXfHe7/jUDjsPtySwcioO5+BeVo | ED25519 |
Une fois connectés au serveur de virtualisation, nous créérons la machine virtuelle, avec le nom `matrix`, à l'aide de la commande suivante:
```
user@virt $ vmiut creer matrix
```
Une fois la commande exécutée, vous seront donnés les détails de la machine virtuelle:
```
Virtual machine 'matrix' is created and registered.
UUID: 50754f1a-e214-48e4-b0ff-964e2fff32e1
Settings file: '/datas/virtual_machine/infoetu/user/vbox_vms/matrix/matrix.vbox'
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone medium created in format 'VMDK'. UUID: e75c47ac-aee4-4d30-bf25-7555ad6699e5
# Paramètres vmiut
MACHINE=matrix
VBOXES=/usr/local/virtual_machine/infoetu/user/vbox_vms
RESEAU=vboxtap0
MEMOIRE=1024
VRDEPORT=12120-12129
MODELE=/home/public/vm/disque-bookworm-12.2-20go.vdi
HOTE=dattier
# Paramètres VirtualBox
name=matrix
UUID=50754f1a-e214-48e4-b0ff-964e2fff32e1
path=/datas/virtual_machine/infoetu/user/vbox_vms/matrix
memory=1024
etat=running
vrdeport=12120
mac=08:00:27:9b:6b:99
ip-possible=
```
Vous pouvez lister toutes vos machines virtuelles disponibles sur le serveur de virtualisation à l'aide de la commande suivante:
```
user@virt $ vmiut lister
"matrix" {50754f1a-e214-48e4-b0ff-964e2fff32e1}
```
## ⚡ Démarrage et gestion de la machine virtuelle
Une fois la machine virtuelle créée, nous pouvons la démarrer à l'aide de la commande suivante:
```
user@virt $ vmiut demarrer matrix
Waiting for VM "matrix" to power on...
VM "matrix" has been successfully started.
```
## 🧠 D'autres commandes à savoir sur `vmiut` à connaître
Pour arrêter une machine virtuelle en cours:
```
user@virt $ vmiut arreter [nom]
```
Pour supprimer une machine virtuelle:
```
user@virt $ vmiut supprimer [nom]
```
Pour lister les informations d'une machine virtuelle:
```
user@virt $ vmiut info [nom]
```
<hr>
- Page précédente: [Gestion des clés de connexion SSH](ssh-keygen.md)
- Page suivante: [Connexion au terminal de la machine virtuelle](connect-serial-vm.md)
\ No newline at end of file
À FAIRE
\ No newline at end of file
# 1.5: Configuration réseau et mise à jour
Actuellement, la machine virtuelle possède une adresse IP fournie via le protocole DHCP, dans une plage allant de **10.42.1.0** à **10.42.99.255**.
Chaque étudiant est fourni une plage d'adresses IP de taille CIDR /24.
Exemple (ordre alphabétique des membres du groupe de SAÉ):
- **Hugo DEBUYSER**: 10.42.133.[**1-254**] (10.42.133.0/24)
- **Matias MENNECART**: 10.42.154.[**1-254**] (10.42.154.0/24)
- **Matisse DEKEISER**: 10.42.155.[**1-254**] (10.42.155.0/24)
Ici, les plages vont de `10.42.x.1` à `.254`, les octets `.0` et `.255` étant réservés respectivement à l'adresse de **réseau** et l'adresse de **broadcast** (adresse spéciale permettant la transmission de messages à toutes les machines d'un réseau).
Ces plages correspondent à un réseau avec un masque [**CIDR**](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) (Classless Inter-Domain Routing) de **/24**.
Nous allons donc modifier la configuration réseau de la machine virtuelle afin de correspondre à une IP statique dans cette plage.
<hr>
### 💡 Note:
À partir de cette étape, le 3ème octet de la plage d'IP sera remplacé par un `x` dans les instructions. Vous devrez remplacer ce `x` par le troisième octet correspondant à votre plage d'adresses IP.
Exemple: si je suis **Matisse DEKEISER**, alors `10.42.x.1` deviendra `10.42.155.1`.
<hr>
## 📡 Modifications permanentes à apporter au réseau
- Nous souhaitons que la machine virtuelle possède l'adresse IP statique `10.42.x.1`.
- Nous souhaitons qu'elle utilise le routeur `10.42.0.1`.
- Nous souhaitons qu'elle utilise le serveur DNS `10.42.0.1`.
Pour cela, nous nous chargerons de modifier deux fichiers de configuration réseau: `/etc/network/interfaces` et `/etc/resolv.conf`.
## 🧰 Connexion en tant qu'administrateur/`root`
Pour les commandes et la configuration qui va suivre, vous devez être connecté en tant qu'administrateur/`root`.
Pour se connecter à l'utilisateur `root`, exécutez cette commande:
```
user@vm $ su -
```
La commande [`su`](https://www.ibm.com/docs/en/aix/7.1?topic=s-su-command) (pour *substitute user*) nous permet de changer d'utilisateur. L'utilisateur sans nom donné à la suite nous permet de nous connecter au compte `root`.
Le symbole `-` à la suite de la commande nous permet de spécifier que l'environnement courant de votre session devra être changé par celui de l'utilisateur auquel vous souhaitez accéder: l'utilisateur `root` ayant accès à divers outils spéciaux que seul lui peut utiliser, tous présents dans le dossier `/usr/sbin` (pour *system binaries*).
La commande vous demandera de saisir le mot de passe de l'utilisateur `root`, dans notre cas il s'agit de `root` (voir modèle de la machine virtuelle dans la partie 1.3).
```
Password:
root@debian:~#
```
<hr>
### 💡 Note:
Par raison de sécurité, les mots de passe ne sont pas affichés en clair sur les systèmes UNIX, vous ne verrez donc pas votre mot de passe en train d'être écrit sur votre terminal.
<hr>
Pour commencer la configuration, éteignez l'interface réseau standard de la machine virtuelle (dans notre cas, `enp0s3`) à l'aide de l'outil `ifdown` (*interface down*):
```
root@vm # ifdown enp0s3
```
Pour modifier les fichiers suivants, utilisez un éditeur de texte accessible par terminal et déjà présent sur la machine virtuelle, ici [`nano`](https://www.nano-editor.org).
## 📄 /etc/network/interfaces
Fichier de configuration système servant à paramétrer le réseau d'une machine.
La configuration réseau qui nous intéresse (interface `enp0s3`) se trouve tout en bas du fichier. Par défaut, elle ressemble à ceci:
```
iface enp0s3 inet dhcp
```
Cette ligne se charge de configurer automatiquement l'interface `enp0s3` via DHCP. Étant donné que nous souhaitons avoir une adresse IP statique, nous allons la modifier.
En suivant les instructions données dans au dessus, voici la configuration réseau nécessaire à insérer à la place de la ligne précédente:
```
iface enp0s3 inet static
address 10.42.x.1/24
gateway 10.42.0.1
```
- La première ligne annonce au système une configuration réseau **statique**.
- La deuxième ligne configure notre adresse IP comme étant `10.42.x.1` (`.1` car il s'agit de la première machine dans notre plage de réseau, `.0` étant réservée au réseau), avec comme masque /24 (voir notre plage de réseau ci-dessus).
- La troisième ligne configure l'adresse à utiliser comme routeur.
## 📄 /etc/resolv.conf
Fichier de configuration système servant à paramétrer le resolver/serveur du protocole [**DNS**](https://en.wikipedia.org/wiki/Domain_Name_System) (Domain Name Sysstem).
Ici, nous souhaitons avoir l'adresse `10.42.0.1` comme serveur DNS. Pour cela, nous écrivons ceci dans le fichier de configuration:
```
nameserver 10.42.0.1
```
## 🧪 Redémarrage de l'interface réseau et tests
Une fois les deux fichiers configurés, redémarrez l'interface rédeau `enp0s3` à l'aide de l'outil `ifup` (*interface up*):
```
root@vm # ifup enp0s3
```
Pour tester si la configuration réseau a été correctement prise en compte, exécutez les 3 commandes suivantes:
```
user@vm $ ip addr
```
Permet de voir la configuration réseau actuelle de la machine.
![Configuration réseau via ip addr](/resources/ip-addr.png)
```
user@vm $ ip route
```
Permet de voir la configuration de routage actuelle de la machine.
![Configuration routage via ip route](/resources/ip-route.png)
```
user@vm $ host www.univ-lille.fr
```
Permet d'effectuer une résolution DNS pour obtenir l'adresse IP associée au nom de domaine `www.univ-lille.fr`.
![Résolution DNS via host](/resources/host-univ-lille.png)
Pour tester si cette configuration est bien permanente, redémarrez la machine virtuelle et ré-effectuez les 3 tests ci-dessus:
### Redémarrage depuis le terminal de la machine virtuelle (en tant que root)
```
root@vm # reboot
```
### Redémarrage depuis le serveur de virtualisation
```
user@virt $ vmiut redemarrer matrix
```
### Questions de connexion root via SSH
Essayez de vous connecter à la machine virtuelle en SSH sur le compte `root`.
- **Quelle commande avez vous utilisée ?**
```
user@virt $ ssh root@10.42.x.1
```
- **Que se passe-t’il ?**
La connexion échoue, même si le mot de passe saisi est correct.
- **Pourquoi ?**
Par défaut, [`sshd`](https://man.openbsd.org/sshd) est configuré pour ne pas permettre la connexion au compte root, étant très peu sécurisée.
Reconnectez vous, cette fois avec le compte `user` et lisez la page de manuel [`su(1)`](https://linux.die.net/man/1/su).
- **Quelle est la signification de l’option `--login` ?**
L'option `--login` permet d'avoir un environnement de travail similaire à une connexion réelle à l'utilisateur donné: réinitialisation des variables d'environnement, changement de répertoire de travail, etc.
- **Pourquoi est-il intéressant de l’utiliser ?**
Cela permet par exemple à l'utilisateur `root` de bénéficier des outils administrateurs disponibles dans `/usr/sbin`. Sans l'option `--login`, la variable d'environnement `PATH` (liste tous les répertoires contenant des programmes exécutables) restera celui de l'utilisateur classique `user`, et donc les nouvelles variables d'environnement ne seront pas prises en compte et ces programmes seront considérés comme inexistants.
Utilisez la commande `su` pour passer `root`:
```
user@virt $ su --login root
```
## ⚙️ Mise à jour et installation des outils via `apt`
Par souci de sécurité, il est toujours important d'avoir les dernières versions des logiciels sur sa machine. Dans notre cas, les logiciels pré-installés sur notre machine virtuelle pourraient être en retard de plusieurs versions par rapport aux dépôts en ligne de Debian, ce qui pourrait être critique en termes de sécurité (exemple: vulnérabilités dans des services...).
Nous allons donc procéder à une mise à jour du système.
Pour cela, connectez vous au compte `root` (voir ci-dessus) à l'aide de la commande `su`:
```
user@vm $ su -
```
Une fois connecté au compte administrateur, exécutez ces 2 commandes via l'outil [`apt`](https://en.wikipedia.org/wiki/APT_(software)) (le gestionnaire de paquets sur Debian):
```
root@vm # apt update
root@vm # apt full-upgrade
```
La première commande va mettre à jour les dépôts locaux d'`apt` sur votre machine par rapport aux dépôts distants, et la deuxième commande va procéder à une mise à jour intégrale de la machine virtuelle.
Cette mise à jour peut durer entre 1 et 5 minutes.
Une fois la mise à jour effectuée, il se peut qu'une nouvelle version du noyau Linux se soit installée: pour tenir compte de ces modifications, redémarrez la machine virtuelle:
```
root@vm # reboot
```
Une fois la mise à jour complétée et la machine virtuelle redémarée, installez les outils suivants avec `apt`:
```
root@vm # apt install vim less tree rsync
```
- [`vim`](https://www.vim.org): Un éditeur de texte open-source modulable.
- [`less`](https://linux.die.net/man/1/less): Outil permettant la visualisation de fichiers page par page (similaire à la lecture d'une manpage).
- [`tree`](https://linux.die.net/man/1/tree): Outil de visualisation de l'arborescence de fichiers d'un dossier.
- [`rsync`](https://rsync.samba.org/): Logiciel de synchronisation et de transfert de fichiers.
### 📚 Plus d'informations sur les outils mentionnés dans cette procédure:
- [La documentation de OpenSSH par OpenBSD](https://www.openssh.com/manual.html)
- [Documentation de `/etc/network/interfaces`](https://manpages.ubuntu.com/manpages/focal/man5/interfaces.5.html)
- [Documentation de `/etc/resolv.conf`](https://manpages.ubuntu.com/manpages/oracular/man5/resolv.conf.5.html)
- [Guide de l'administrateur Debian pour `apt`](https://www.debian.org/doc/manuals/debian-handbook/apt.en.html)
<hr>
- Page précédente: [Connexion au terminal de la machine virtuelle](connect-serial-vm.md)
- Page suivante: [Création d'alias de connexion SSH](ssh-alias.md)
\ No newline at end of file
À FAIRE
\ No newline at end of file
# 1.6: Création d'alias de connexion SSH
Pour faciliter la connexion depuis les ordinateurs de l'IUT au serveur de virtualisation ou encore à la machine virtuelle directement, nous allons configurer le client `ssh` pour avoir des alias de connexion.
# 💾 Configuration SSH
Nous allons d'abord procéder à la création des alias de connexion.
Premièrement, créez un fichier `config` dans le répertoire `~/.ssh`:
```
user@phys $ nano ~/.ssh/config
```
Dedans, insérez les deux alias de connexion. Pour le premier (serveur de virtualisation), une connexion directe est nécessaire, mais pour le deuxième (machine virtuelle), nous aurons besoin de l'option `ProxyJump` pour paramétrer un saut de machine.
```
Host virt
HostName dattier.iutinfo.fr
User user
ForwardAgent yes
Host vm
Hostname 10.42.x.1
User user
ProxyJump virt
```
Une fois le fichier sauvegardé, vous pourrez vous connecter plus facilement à distance:
### 🖥️ Se connecter au serveur de virtualisation:
```
user@phys $ ssh virt
```
### 🖥️ Se connecter à la machine virtuelle (doit être démarée):
```
user@phys $ ssh vm
```
### 📚 Plus d'informations sur les outils mentionnés dans cette procédure:
- [La documentation de OpenSSH par OpenBSD](https://www.openssh.com/manual.html)
<hr>
- Page précédente: [Configuration réseau et mise à jour](setup-virtual-network.md)
- Page suivante: [Sommaire (partie 2)](../2-configuration-services/README.md)
\ No newline at end of file
À FAIRE
\ No newline at end of file
# 1.2: Gestion des clés de connexion SSH
Pour faciliter et sécuriser la connexion via `ssh` au serveur de virtualisation, nous allons générer une paire de clés de chiffrement.
## 🔐 ssh-keygen: Création d'une paire de clés
[`ssh-keygen`](https://man.openbsd.org/ssh-keygen) est un outil intégré dans [**OpenSSH**](https://www.openssh.com/) (ensemble d'outils de communication sécurisée via [`ssh`](https://man.openbsd.org/ssh)) permettant à un utilisateur de générer des clés d'authentification pour le protocole `ssh`.
Par défaut, sur Linux, tous les fichiers en lien avec `ssh` seront stockés dans `~/.ssh`.
<hr>
### 💡 Note:
Il se peut que vous ayez déjà généré une paire de clés de chiffement dans le passé. Pour vérifier si vous possédez déjà des clés de chiffrement `ssh` sur votre ordinateur, exécutez la commande suivante:
```
user@phys $ ls -al ~/.ssh
```
Cette commande liste tous les fichiers (dont ceux cachés) dans le répertoire `~/.ssh`. Par défaut, une paire de clés de chiffrement `ssh` sont composés de 2 fichiers:
- `id_[algorithme]`: Votre clé privée.
- `id_[algorithme].pub`: La clé publique.
Ce nom varie selon l'algorithme choisi pendant la génération des clés de chiffrement:
- `id_rsa`: Choix par défaut, algorithme [RSA](https://en.wikipedia.org/wiki/RSA_(cryptosystem)) (Rivest–Shamir–Adleman).
- `id_ecdsa`: Algorithme [ECDSA](https://en.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm) (Elliptic Curve Digital Signature Algorithm).
- `id_ed25519`: Algorithme [Ed25519/EdDSA](https://en.wikipedia.org/wiki/EdDSA) (Edwards-curve Digital Signature Algorithm).
- etc.
Vous pouvez aussi utiliser la commande [`ssh-add`](https://man.openbsd.org/ssh-add) avec l'argument `-l` (list):
```
user@phys $ ssh-add -l
3072 SHA256:qvy2OtCpOSTx0pZMMA+RgOSiF3E5R/NJHAawiC2f40c user@phys (RSA)
```
Si vous possédez déjà une paire de clés de chiffrement, le reste de cette procédure n'est pas nécessaire à suivre.
<hr>
Pour générer une paire de clés de chiffrement, exécutez la commande suivante (nous utiliserons les paramètres par défaut):
```
user@phys $ ssh-keygen
```
Le programme vous demandera en premier temps où souhaitez vous stocker les clés de chiffrement:
```
Generating public/private rsa key pair.
Enter file in which to save the key (/home/infoetu/user/.ssh/id_rsa):
```
Nous souhaitons garder le chemin par défaut, appuyez sur `ENTRÉE`.
Il vous demandera par la suite de choisir un mot de passe pour vos clés de chiffrement. Ce mot de passe permet de protéger l'utilisation de votre clé privée en cas de vol:
```
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
```
<hr>
### 💡 Note:
Par raison de sécurité, les mots de passe ne sont pas affichés en clair sur les systèmes UNIX, vous ne verrez donc pas votre mot de passe en train d'être écrit sur votre terminal.
<hr>
Une fois le mot de passe saisi, le logiciel aura généré votre paire de clés de chiffrement:
```
Your identification has been saved in /home/infoetu/user/.ssh/id_rsa
Your public key has been saved in /home/infoetu/user/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:dYxbSTNEGqxKcMVBnR1QQ5TMM/RNKcbl4X+OhIbYc2c user@phys
The key's randomart image is:
+---[RSA 3072]----+
| +++o&#o.oo|
| . . . +*BXo+.|
| o .+ *ooo.|
| . .+ = . .|
| . .S = + E o|
| . + + o.|
| . .|
| |
| |
+----[SHA256]-----+
```
## 📠 Transmission de votre clé publique au serveur de virtualisation
Quand un utilisateur souhaite se connecter via `ssh` à un serveur distant, ce dernier vérifie dans le fichier `$HOME/.ssh/authorized_keys` à la recherche de clés publiques autorisées à se connecter.
Pour permettre au serveur de virtualisation de connaître notre nouvelle clé publique, nous allons nous servir du script [`ssh-copy-id`](https://manpages.ubuntu.com/manpages/oracular/en/man1/ssh-copy-id.1.html).
Il s'agit d'un script qui automatise le processus de transmission de clés `ssh` vers une machine distante.
Pour transmettre votre clé publique au serveur de virtualisation, exécutez la commande suivante:
```
user@phys $ ssh-copy-id -i [clé publique] [serveur]
```
L'argument `-i` sert à spécifier une clé publique/identité à transmettre. Il n'est toutefois pas obligatoire, mais ne pas le mettre transmettra **TOUTES** les clés de chiffrement existantes dans votre dossier `.ssh`.
Dans notre cas:
```
user@phys $ ssh-copy-id -i ~/.ssh/id_rsa.pub dattier.iutinfo.fr
```
Le script commencera par une tentative de connexion `ssh` standard (via mot de passe, non sécurisé):
```
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/infoetu/user/.ssh/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
Enter passphrase for key '/home/infoetu/user/.ssh/id_rsa':
```
Une fois le mot de passe de votre clé de chiffrement saisi, la clé sera transmise au serveur de virtualisation:
```
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'dattier.iutinfo.fr'"
and check to make sure that only the key(s) you wanted were added.
```
Si la clé a déjà été transmise auparavant, vous aurez ce message:
```
/usr/bin/ssh-copy-id: WARNING: All keys were skipped because they already exist on the remote system.
(if you think this is a mistake, you may want to use -f option)
```
Vous pouvez désormais vous connecter au serveur de virtualisation de manière sécurisée.
À la première connexion, un mot de passe vous sera demandé, mais par la suite, un **agent SSH** (démarré par votre environnement de bureau au démarrage du système) s'occupera de fournir votre mot de passe déchiffré automatiquement.
### 📚 Plus d'informations sur les outils mentionnés dans cette procédure:
- [La documentation de OpenSSH par OpenBSD](https://www.openssh.com/manual.html)
<hr>
- Page précédente: [Connexion à distance au serveur de virtualisation](connect-virt-server.md)
- Page suivante: [Création et gestion de la machine virtuelle](create-virtual-machine.md)
\ No newline at end of file
......@@ -2,15 +2,17 @@
Afin de changer le nom d'hôte (aussi appelé [hostname](https://en.wikipedia.org/wiki/Hostname)) de la machine virtuelle (par défaut: `debian`) par `matrix`, il vous suffira de modifier 2 fichiers de configuration système.
## 🧰 Connexion en tant qu'administrateur/root
Pour les modifier, utilisez n'importe quel éditeur de texte souhaité (nano, vim...), en s'ayant connecté au compte administrateur avant:
```bash
$ su -
user@vm $ su -
```
## 📄 /etc/hostname
Fichier de configuration qui contient le nom d'hôte de la machine.
Fichier de configuration système qui contient le nom d'hôte de la machine.
Pour le modifier, changez la première ligne (par défaut: `debian`) par le nouveau nom d'hôte voulu, ici:
......@@ -34,7 +36,19 @@ Vous pouvez par la suite redémarrer la machine virtuelle.
Le nom à côté du `@` dans le prompt du terminal de la machine virtuelle devrait avoir changé pour `matrix` après le redémarrage.
Afin de tester si le nouveau nom d'hôté a bien été configuré pour le réseau local, vous pouvez essayer de ping votre machine virtuelle en exécutant la commande `ping matrix` depuis le terminal de cette dernière.
Afin de tester si le nouveau nom d'hôté a bien été configuré pour le réseau local, vous pouvez essayer de ping votre machine virtuelle en exécutant la commande `ping` depuis le terminal de cette dernière.
```
user@matrix:~$ ping matrix
PING matrix (127.0.1.1) 56(84) bytes of data.
64 bytes from matrix (127.0.1.1): icmp_seq=1 ttl=64 time=0.030 ms
64 bytes from matrix (127.0.1.1): icmp_seq=2 ttl=64 time=0.025 ms
64 bytes from matrix (127.0.1.1): icmp_seq=3 ttl=64 time=0.028 ms
^C
--- matrix ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2038ms
rtt min/avg/max/mdev = 0.025/0.027/0.030/0.002 ms
```
![Résultat d'un ping à la VM fonctionnel](/resources/ping-matrix.png)
......
......@@ -2,81 +2,90 @@
PostgreSQL est un système de gestion de bases de données relationnelles, similaire à MySQL, MariaDB, Oracle... Dans notre cas, PostgreSQL est utilisé par Synapse pour la gestion des utilisateurs de l'instance Matrix.
## Installation de PostgreSQL
## 📂 Installation de PostgreSQL
Maintenant que sudo est installé, et les droits administrateurs donnés à notre utilisateur, nous n'avons plus besoin de se connecter à l'utilisateur `root` avec la commande `su`, il suffit de simplement écrire `sudo` devant.
En premier temps, mettez à jour les dépôts du gestionnaire de paquets `apt` afin de bénéficier des derniers outils à jour:
```
$ sudo apt update
user@matrix $ sudo apt update
```
Ensuite, installez le serveur PostgreSQL avec la commande suivante:
```
$ sudo apt install postgresql
user@matrix $ sudo apt install postgresql
```
### Note:
Le paquet `postgresql` est en réalité un métapaquet, un paquet spécial qui ne contient pas des outils mais redirige le gestionnaire de paquets vers différents autres paquets à télécharger.
<hr>
### 💡 Note:
Le paquet [`postgresql`](https://packages.debian.org/bookworm/postgresql) est en réalité un métapaquet, un paquet spécial qui ne contient pas des outils mais redirige le gestionnaire de paquets vers différents autres paquets à télécharger.
Ici, `postgresql` renvoie le gestionnaire de paquets vers:
- `postgresql-15`: Tous les outils liés au serveur PostgreSQL.
- `postgresql-client-15`: Tous les outils client pour communiquer avec un serveur PostgreSQL, dont `psql`, `createdb`, etc.
- `postgresql-doc-15`: La documentation/manpages liée(s) à PostgreSQL.
- [`postgresql-15`](https://packages.debian.org/bookworm/postgresql-15): Tous les outils liés au serveur PostgreSQL.
- [`postgresql-client-15`](https://packages.debian.org/bookworm/postgresql-client-15): Tous les outils client pour communiquer avec un serveur PostgreSQL, dont `psql`, `createdb`, etc.
- [`postgresql-doc-15`](https://packages.debian.org/bookworm/postgresql-doc-15): La documentation/manpages liée(s) à PostgreSQL.
- etc.
Une fois installé, le serveur PostgreSQL a dû être automatiquement démarré par `systemd` (le système d'initialisation qui gère les services dits *daemons*) appelé par `apt`. Vous pouvez vérifier si il est actif avec la commande suivante:
<hr>
Une fois installé, le serveur PostgreSQL a dû être automatiquement démarré par [`systemd`](https://en.wikipedia.org/wiki/Systemd) (le système d'initialisation qui gère les services dits *daemons*) appelé par `apt`. Vous pouvez vérifier si il est actif avec la commande suivante:
```
sudo systemctl status postgresql
user@matrix $ sudo systemctl status postgresql
```
Si il n'a pas été démarré automatiquement par `systemd`, lancez le manuellement avec la commande suivante:
```
sudo systemctl start postgresql
user@matrix $ sudo systemctl start postgresql
```
Si vous souhaitez que le système démarre votre serveur PostgreSQL à chaque démarrage de la machine virtuelle, vous pouvez configurer `systemd` pour le faire avec la commande suivante:
```
sudo systemctl enable postgresql
user@matrix $ sudo systemctl enable postgresql
```
## Configuration de PostgreSQL
## 📝 Configuration de PostgreSQL
Maintenant que PostgreSQL est installé et actif sur la machine virtuelle, nous allons devoir configurer son serveur.
Pour commencer, nous devons créer un utilisateur du serveur PostgreSQL au nom de `matrix`, avec comme mot de passe `matrix`. Pour cela, exécutez la commande suivante:
```
sudo -u postgres createuser -P matrix
user@matrix $ sudo -u postgres createuser -P matrix
```
### Note:
L'outil `createuser` vous demandera d'écrire le mot de passe une fois la commande exécutée. Par raison de sécurité, les mots de passe ne sont pas affichés en clair sur les systèmes UNIX, vous ne verrez donc pas votre mot de passe en train d'être écrit sur votre terminal.
<hr>
### 💡 Note:
L'outil [`createuser`](https://www.postgresql.org/docs/current/app-createuser.html) vous demandera d'écrire le mot de passe une fois la commande exécutée. Par raison de sécurité, les mots de passe ne sont pas affichés en clair sur les systèmes UNIX, vous ne verrez donc pas votre mot de passe en train d'être écrit sur votre terminal.
<hr>
Une fois l'utilisateur `matrix` créé, nous allons devoir créer une base de données. Par simplicité, nous la nommerons `matrix`. Pour ceci, exécutez la commande suivante:
Une fois l'utilisateur `matrix` créé, nous allons devoir créer une base de données à l'aide de la commande [`createdb`](https://www.postgresql.org/docs/17/app-createdb.html). Par simplicité, nous la nommerons `matrix`. Pour ceci, exécutez la commande suivante:
```
sudo -u postgres createdb --owner=matrix matrix
user@matrix $ sudo -u postgres createdb --owner=matrix matrix
```
## Première connexion
## 🖥️ Première connexion
Une fois la base de données créé, vous pouvez vous-y connecter à l'aide de l'outil `psql`:
Une fois la base de données créé, vous pouvez vous-y connecter à l'aide de l'outil [`psql`](https://www.postgresql.org/docs/17/app-psql.html):
```
psql -U matrix -h localhost
user@matrix $ psql -U matrix -h localhost
```
Une fois le mot de passe rentré, vous serez accueillis par le prompt du shell de `psql` qui vous permettra de communiquer avec le serveur PostgreSQL avec soit des commandes SQL, ou certaines commandes spéciales, telles que `\?` qui vous affichera une liste de toutes les commandes spéciales utilisables.
Pour quitter `psql`, entrez la commande `exit`.
### TEST À AJOUTER
### 📚 Plus d'informations sur les outils mentionnés dans cette procédure:
- [Documentation de PostgreSQL](https://www.postgresql.org/docs/)
<hr>
......
......@@ -2,33 +2,35 @@
La commande `sudo` permet aux utilisateurs (avec les permissions requises) d'exécuter des commandes en tant qu'administrateur/superuser.
## 🧰 Connexion en tant qu'administrateur/root
Comme nous n'avons pas encore cette commande, nous devons nous connecter à l'utilisateur `root` à l'aide de la commande suivante:
```
$ su -
user@matrix $ su -
```
## Installation de sudo
## 🖥️ Installation de sudo
Pour installer sudo, exécutez la commande suivante en temps qu'administrateur
```
# apt update
# apt install sudo
root@matrix # apt update
root@matrix # apt install sudo
```
La première commande se charge de mettre à jour les dépôts du gestionnaire de paquets `apt`, propre à Debian, afin d'être sûr d'avoir les versions les plus récentes des outils souhaités.
La seconde commande va installer l'outil `sudo` sur l'ordinateur. Si la commande vous demande de valider l'installation, appuyez sur `ENTER` pour valider l'installation.
## Configuration des droits administrateur
## ⚙️ Configuration des droits administrateur
Pour permettre à notre utilisateur `user` de pouvoir exécuter des commandes en tant qu'administrateur, nous devons l'ajouter au groupe `sudo`.
Pour cela, exécutez la commande suivante en temps qu'administrateur:
```
# usermod -aG sudo user
root@matrix # usermod -aG sudo user
```
Afin que les changements s'opèrent correctement sur l'utilisateur, redémarrez la machine virtuelle.
......@@ -40,17 +42,22 @@ Une fois la machine virtuelle redémarée, vous pouvez essayer une simple comman
Exemple:
```
$ sudo whoami
user@matrix $ sudo whoami
root
```
Si vous recevez un message d'erreur, vérifiez que l'utilisateur a bien été ajouté au groupe sudo avec la commande `groups`:
```
$ groups
[à ajouter]
user@matrix $ groups
user cdrom floppy sudo audio dip video plugdev users netdev bluetooth
```
Le groupe `sudo` devrait être présent dans la liste si tout a fonctionné.
### 📚 Plus d'informations sur les outils mentionnés dans cette procédure:
- [Documentation de `sudo`](https://www.sudo.ws/)
<hr>
- Page précédente: [Modifier le nom d'hôte de la machine virtuelle](./change-hostname.md)
......
resources/host-univ-lille.png

26.3 KiB

resources/ip-addr.png

73.6 KiB

resources/ip-route.png

26.7 KiB

resources/ping-matrix.png

38.6 KiB | W: | H:

resources/ping-matrix.png

75 KiB | W: | H:

resources/ping-matrix.png
resources/ping-matrix.png
resources/ping-matrix.png
resources/ping-matrix.png
  • 2-up
  • Swipe
  • Onion skin
resources/serial-console.png

11.5 KiB

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment