{{indexmenu_n>10}}
# Accès d'urgence aux machines
Quand il n'est plus possible d'accéder aux machines par SSH ou via l'interface Proxmox, par exemple en cas de redémarrage raté, de kernel panic ou de freeze, il est utile de pouvoir les forcer à redémarrer ou reprendre la main sur une console et régler le problème.
## Sur les machines virtuelles
### Accès VNC web
Dans l'interface Proxmox, on peut obtenir un accès VNC en cliquant sur « Console → NoVNC » pour les machines virtuelles.
{{ :technique:infrastructure:vnc.png |}}
VNC (Virtual Network Computing, littéralement « informatique virtuelle en réseau ») est un système de visualisation et de contrôle de l'environnement de bureau d'un ordinateur distant. Il permet au logiciel client VNC de transmettre les informations de saisie du clavier et de la souris à l'ordinateur distant, possédant un logiciel serveur VNC à travers un réseau informatique ([source](https://fr.wikipedia.org/wiki/Virtual_Network_Computing)).
[NoVNC](https://novnc.com/info.html) est un client VNC pour le web.
Un terminal où on peut se connecter en tant que root (mot de passe dans [[asso:tuto:vaultwarden|Vaultwarden]]) pour administrer la machine, ou avec son compte LDAP si ça fonctionne.
Par contre le clavier est en QWERTY, si le mot de passe contient des caractères spéciaux, c'est impossible à taper. Et on ne peut pas faire de copier/coller... Une astuce sur Linux est de copier le mot de passe dans son presse-papier, lancer dans un terminal :
```
sh -c 'sleep 3.0; xdotool type "$(xclip -o -selection clipboard)"'
```
Puis revenir vite dans la fenêtre VNC, et le mot de passe se tape tout seul.
### Accès SPICE
SPICE (acronyme anglais de « Simple Protocol for Independent Computing Environments », signifiant « Protocole simple pour des environnements informatiques indépendants ») est un protocole de communication, utilisé en général en virtualisation, pour visualiser et gérer à distance un système d'exploitation ([source](https://fr.wikipedia.org/wiki/SPICE_(protocole))).
SPICE a des fonctionnalités beaucoup plus avancées que VNC, en particulier le copier-coller. Il permet aussi d'accéder nativement aux périphériques USB de la machine, à son son, etc. L'écosystème SPICE permet notamment de configurer et de sauvegarder la configuration d'accès aux machines virtuelles sur sa machine locale, pour un accès rapide.
Pour que le copier-coller fonctionne, il faut que le paquet `spice-vdagent` soit installé sur la machine virtuelle.
Sur sa machine locale, il faut installer les paquets `virt-manager`, `virt-viewer` et `spice-gtk`.
Dans l'interface Proxmox, il faut choisir `SPICE` comme « écran » de la machine, dans l'onglet `Matériel`.
{{ :technique:infrastructure:spice.png |}}
Si l'option n'était pas activée, un redémarrage de la machine est nécessaire.
Enfin, vérifier que le port 3128 est ouvert sur l'hyperviseur (voir [[technique:adminsys:secu:firewall|pare-feu]]).
Puis on télécharge un fichier à ouvrir avec `virt-manager` en cliquant sur `Console → SPICE`.
{{ :technique:infrastructure:console.png |}}
## Sur Bob
La carte mère de Bob possède une fonction qui permet d'avoir accès à la machine quel que soit son état ([[https://en.wikipedia.org/wiki/Intel_Active_Management_Technology|Intel AMT]]).
Avec l'AMT, on a un accès VNC aux machines en passant par un rebond sur `nagios.tetaneutral.net`. On ne peut en effet obtenir un accès VNC que via le réseau privé de Tetaneutral.
Il vous faudra pour ce faire la clé SSH de Picasoft, enregistrée sur `nagios`, et disponible sur le [[asso:tuto:vaultwarden|vaultwarden]].
Une fois la clé privée SSH de Picasoft enregistrée sur votre machine, utilisez les commandes suivantes :
```bash
# Redirection des ports locaux vers les ports distants de Bob
# On suppose que ~/.ssh/id_rsa_picasoft contient la clé privée Picasoft (voir Vaultwarden)
# 192.168.128.151 est paramétrée au niveau de vPro, pas depuis Linux
ssh -p 2222 nagios.tetaneutral.net -l ttnn -N \
-i ~/.ssh/id_rsa_picasoft \
-L 8081:192.168.128.152:16992 -L 5911:192.168.128.152:5900
```
Explications :
* `-l ttnt` : le login autorisé à accéder à `nagios` via notre clé est `ttnt`
* `-N` : désactive l'exécution d'un shell distant, rien ne s'affiche, c'est normal
* `-L port:host:hostport` : `port` (en local) est forwardé au niveau du port `hostport` du serveur`host`.
* `-p 2222` : le serveur SSH sur `nagios` écoute sur le port 2222
Avec un navigateur web, l'URL `http://localhost:8081` donne accès à l'interface web d'AMT pour l'inventaire et le lancement des commandes de redémarrage des machines. Le mot de passe est aussi dans [[asso:tuto:vaultwarden|Vaultwarden]], chercher `vpro`.
Voici un schéma pour mieux comprendre ce qu'il se passe :
{{ :technique:infrastructure:hyperviseurs:tetaneutral:ssh_port_forwarding_alice1.png?600 |}}
On pourra aussi utiliser un client VNC pour l'accès VNC, comme [remote-viewer (1)](https://linux.die.net/man/1/remote-viewer).
```bash
remote-viewer vnc://localhost:5911
```
En général, l'idée est de redémarrer les machines via l'interface web AMT puis d'utiliser le VNC pour voir les erreurs au démarrage et les corriger.
{{ :technique:infrastructure:amt.png |}}
Depuis un accès physique, l'interface vPro se configure avec la combinaison de touche `Ctrl+P` avant le boot.
## Sur Alice
Historiquement, Alice est administrable à distance comme Bob, mais une défaillance de la carte-mère empêche de la redémarrer en utilisant vPro lorsque la machine a freeze. La seule solution est alors de la redémarrer physiquement, mais pour ce faire il faut encore [[technique:infrastructure:ajouter_des_disques_dans_caribou|pouvoir y accéder]].
Des bénévoles ont développé une solution permettant de redémarrer Alice à distance « comme si » on la redémarrait physiquement.
C'est un petit système Arduino connecté au pin de redémarrage d'Alice et contrôlable depuis Caribou. Les plans de conception et de branchement sont consultables [sur ce dépôt](https://gitlab.utc.fr/picasoft/projets/arduino-remote-boot).
Pour redémarrer Alice, il faut se connecter en root sur Caribou et se rendre dans le dossier `/root/arduino-remote-boot#`.
Si Alice est **allumée**, on lance d'abord cette commande pour l'éteindre :
```bash
./remote-boot.sh -l
```
Puis, quand elle **éteinte**, on lance cette commande pour l'allumer :
```bash
./remote-reboot.sh
```
On peut ensuite suivre le processus de redémarrage en accès VNC.
Il faut rétablir l'accès VNC qui devrait tout de même fonctionner en conditions normales, cf [cette issue](https://gitlab.utc.fr/picasoft/projets/transverse/-/issues/14).
## Sur Caribou
L'équivalent de Intel AMT existe sur les serveurs Dell, il s'agit du système propriétaire [iDRAC](https://en.wikipedia.org/wiki/Dell_DRAC).
Ce système n'est pas disponible sur une IP publique, il faut donc utiliser un rebond sur le serveur coulemelle de Rhizome. Il faudra pour cela récupérer la clé sur le [[asso:tuto:vaultwarden|vaultwarden]].
```bash
# Coulemelle est la machine de Rhizome dans le même datacenter que Alice
# On suppose que ~/.ssh/id_rsa_picasoft contient la clé privée Picasoft (voir Vaultwarden)
# Redirection du port local vers le port distant de Caribou
ssh coulemelle.rhizome-fai.net \
-i ~/.ssh/id_rsa_picasoft \
-l picasoft -N -L 8080:192.168.0.4:443
```
On peut ensuite accéder à `https://localhost:8080` et se connecter à l'aide des identifiants sur Vaultwarden. Il sera notamment possible de redémarrer le système, de gérer les disques du contrôleur RAID et de vérifier la santé du système.