Scénario : quand Partage d’écran plus SSH devient la voie par défaut
En 2026, un Mac mutualisé mêle souvent Xcode visuel et git ou tests CLI sans bloquer l’agenda : Partage d’écran pour l’UI, SSH pour le shell — parfois en même temps.
L’équipe gagne en réactivité parce que personne n’attend un créneau VNC unique pour pousser une brève correction shell. En contrepartie, la responsabilité des collisions remonte au runbook : qui annonce la session, qui garde la main sur le presse-papiers, quelle fenêtre Xcode est la référence.
Si les deux voies partagent le même utilisateur interactif, la préemption ressemble à du « VNC lent » plutôt qu’à une erreur fichier claire.
- Latence : framebuffer sensible au jitter ; SSH tolère plus tant qu’on limite les gros transferts sur le même chemin.
- Audit : curseur versus invite Trousseau graphique.
- CI : tests UI lourds sur le compte vitrine affament l’encodeur.
Guide SSH/VNC pour l’ensemble ; matrice tmux/VNC pour le relais terminal — ce texte reste Screen Sharing Apple plus OpenSSH.
Latence, bande passante et ports pare-feu
Partage d’écran : flux image (Retina, transparence). SSH : texte ; gros scp/rsync sur la même route affament l’encodeur.
Tableau runbook encodage versus shell :
| Signal | Partage d’écran (GUI) | SSH (terminal / fichiers) |
|---|---|---|
| Ce qui cède en premier | Jitter → tuiles, curseur élastique. | RTT ; gros fichiers volent la bande vidéo. |
| Garde-fou indicatif | ~80 ms p95 agréable ; >120 ms : créneaux GUI courts ou région proche. | Shell plus tolérant ; limiter copies concurrentes. |
| Ports à documenter | 3283/tcp ; parfois 5900/tcp — copier le VPN réel. |
22/tcp ; ACL étroites. |
Audit pare-feu applicatif (lecture seule) — à exécuter en préproduction et archiver la sortie dans le wiki :
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --listapps
Capture Réglages → Réseau → Pare-feu après chaque image ; conservez la sortie socketfilterfw dans le ticket de livraison. Les seuils de reconnexion communs aux deux canaux sont détaillés dans la checklist stabilité et latence.
Trois preuves d’acceptation minimum : état pare-feu, liste applicative filtrée, RTT mesurée sur le chemin VPN documenté pour ce siège.
Modèle de permissions : console, observateurs et cloisonnement
Le bureau Partage d’écran partage Trousseau, Simulateur et notifications. L’observateur limite les clics accidentels lors d’une revue incident ; ce n’est pas un second siège OS sans comptes Unix distincts, volumes de cache séparés et conventions d’équipe explicites.
SSH sur autre compte Unix isole fichiers et cron si DerivedData et signatures sont disjoints. Piège : symlinks vers le même $HOME partagé.
Instantané defaults (avant / après image) :
defaults read com.apple.ScreenSharing 2>/dev/null || echo "Pas de plist ScreenSharing"
sudo defaults read /Library/Preferences/com.apple.RemoteManagement 2>/dev/null || echo "Pas de RemoteManagement"
Normes de session — à intégrer au handbook interne :
- Annoncer conducteur / observateur ; notifications coupées côté observation.
- Pas de
sudoinstallateur ad hoc sur le compte GUI — image ou MDM. - Comptes CI sans session écran pour bricoler.
- Rotation mots de passe écran alignée SSH : matrice bastion.
Verrous de build concurrents et passation avec le bureau
Concurrence : flock sur l’arbre automation pour SSH ; GUI plus CI exigent aussi des règles sur caches, Simulateur et codesign.
Schéma minimal — encapsuler les runners destructifs :
flock -n /var/tmp/meshmac-nodeA.codesign.lock -c '/usr/local/bin/build_release.sh'
Créneaux métier et CI : matrice Jira et verrous. File floue → deuxième nœud plutôt qu’un troisième protocole.
FAQ de dépannage
La session écran se connecte puis tombe dès que la CI démarre
CI UI lourde sur le même utilisateur que l’écran ? Séparez comptes ou hôte. Vérifiez MTU / gros transferts SSH.
L’observateur lit-il les secrets des invites Trousseau ?
Observateurs = initiés de confiance ou invites masquées ; sinon capture courte redigée.
Pare-feu actif : SSH OK, écran noir côté Partage d’écran
Autoriser screensharingd / ARD, pas seulement sshd. Rejouer socketfilterfw après patch.
Deux bureaux interactifs pleinement isolés sur un seul Mac ?
Pas deux consoles GPU isolées « gratuites » : second Mac, créneaux plus verrous, ou SSH headless par compte.
Lectures connexes : tmux, FAQ pool, index blog.