Cette page décrit Calíope 1.5, la version que nous construisons en ce moment. La 1.4 est terminée et en cours d'examen par Apple, et la boutique propose aujourd'hui la 1.3 sur le Mac et la 1.2 sur iPad. Le changelog indique dans quelle version chaque fonction est arrivée.

Ajoute un bouton « Ouvrir dans Calíope » à chaque sujet. Ne fonctionne qu'avec l'app installée.

Tunnel SSH

Qu'est-ce que le tunnel SSH ?

Connectez-vous à MySQL derrière un bastion SSH sans exposer le port 3306.

Où le trouver : Panneau latéral › Formulaire profil › Tunnel SSH

Un tunnel SSH (également appelé redirection de port) permet à Calíope de communiquer avec un serveur MySQL qui n'est pas directement accessible depuis votre réseau. Au lieu de se connecter directement à l'hôte MySQL, Calíope ouvre d'abord une session SSH avec un serveur bastion, et à travers cette session crée un canal chiffré vers le MySQL interne.

Cas d'utilisation typique : votre base de données se trouve sur un réseau privé AWS, GCP ou DigitalOcean à 10.0.1.5:3306, mais seul le serveur bastion à bastion.entreprise.com:22 est accessible depuis internet. Calíope ouvre le tunnel automatiquement lors de la connexion et le ferme lors de la déconnexion.

La connexion MySQL fonctionne exactement comme sans tunnel ; le tunnel est complètement transparent pour tous les autres outils.

Mots-clés : ssh, tunnel, bastion, redirection de port, port forwarding, réseau privé, vpc, aws, gcp

Configurer le tunnel SSH

Activez le tunnel dans le profil de connexion et saisissez les informations du bastion.

Où le trouver : Panneau latéral › Formulaire profil › Tunnel SSH

Dans le Gestionnaire de connexions, sélectionnez le profil et activez le commutateur Tunnel SSH dans la section Options du serveur. La section de configuration apparaît avec les champs suivants :

- Hôte SSH — nom d'hôte ou IP du serveur bastion (p. ex. bastion.entreprise.com)
- Port SSH — généralement 22
- Utilisateur SSH — l'utilisateur avec lequel vous vous authentifiez sur le bastion (p. ex. ubuntu, ec2-user)
- Authentification — choisissez entre Mot de passe ou Clé privée

Les champs Hôte / IP et Port du profil principal restent la destination MySQL telle que vue depuis le bastion, et non depuis votre machine. Si MySQL se trouve sur la même machine que le bastion, utilisez 127.0.0.1.

Appuyez sur Tester la connexion pour valider le tunnel complet avant de vous connecter.

Mots-clés : configurer ssh, hôte ssh, port ssh, utilisateur ssh, bastion, bastion host

Authentification SSH par mot de passe

Utilisez le nom d'utilisateur et le mot de passe du bastion pour authentifier le tunnel.

Où le trouver : Panneau latéral › Formulaire profil › Tunnel SSH › Authentification

Sélectionnez Mot de passe dans le sélecteur d'authentification dans la section Tunnel SSH. Le champ Mot de passe SSH apparaît pour vous permettre de saisir le mot de passe de l'utilisateur sur le serveur bastion.

Le mot de passe est enregistré dans le Trousseau système (Keychain) de macOS, jamais dans le fichier de profils. Il est stocké avec la clé interne ssh-pass-<id-profil> et n'est accessible qu'à Calíope.

Cette méthode est la plus simple, mais gardez à l'esprit que de nombreux serveurs modernes désactivent l'authentification par mot de passe au profit des clés cryptographiques.

Mots-clés : mot de passe ssh, password ssh, authentification ssh, keychain, trousseau

Authentification SSH par clé privée

Utilisez une clé ED25519 ou ECDSA, avec ou sans phrase secrète, pour authentifier le tunnel.

Où le trouver : Panneau latéral › Formulaire profil › Tunnel SSH › Clé privée

Sélectionnez Clé privée dans le sélecteur d'authentification. Un bouton Sélectionner apparaît pour choisir le fichier de clé. Calíope enregistre un accès sécurisé au fichier (security-scoped bookmark) afin de pouvoir le lire lors des lancements ultérieurs sans avoir à le resélectionner.

⚠️ Si vous déplacez ou renommez le fichier de clé, Calíope ne pourra plus y accéder à la prochaine connexion et affichera l'erreur « Le fichier de clé SSH n'est plus accessible ». Dans ce cas, ouvrez le profil et sélectionnez le fichier depuis son nouvel emplacement.

Formats et types de clés pris en charge :
- ED25519 (ssh-keygen -t ed25519) — recommandé, sécurisé et rapide
- ECDSA P-256/P-384/P-521 (ssh-keygen -t ecdsa -b 256/384/521)

Les clés doivent être au format OpenSSH natif (en-tête -----BEGIN OPENSSH PRIVATE KEY-----). C'est le format par défaut de ssh-keygen depuis OpenSSH 7.8.

Les clés protégées par phrase secrète fonctionnent. Saisissez la phrase secrète dans le profil et Calíope déchiffre la clé lui-même (bcrypt-pbkdf + AES-256), aussi bien sur le Mac que sur l'iPad et l'iPhone ; la clé déchiffrée ne touche jamais le disque. Si la phrase secrète est fausse, il le dit — ce n'est pas confondu avec un fichier illisible.

⚠️ Les clés RSA ne sont pas prises en charge (limitation de la bibliothèque SSH sous-jacente). Si votre bastion n'accepte que RSA, utilisez l'authentification par mot de passe ou générez une nouvelle clé ED25519 et ajoutez sa clé publique au bastion.

Générer une nouvelle clé ED25519 :

ssh-keygen -t ed25519 -C "caliope@mon-mac"

Copiez la clé publique (~/.ssh/id_ed25519.pub) vers le bastion : ~/.ssh/authorized_keys.

Mots-clés : clé privée, private key, ed25519, ecdsa, openssh, ssh-keygen, authorized_keys, passphrase, rsa

Tester la connexion avec le tunnel SSH

Le bouton Tester la connexion valide le tunnel SSH et l'authentification MySQL de bout en bout.

Où le trouver : Gestionnaire de connexions › Tester la connexion

Lorsque vous appuyez sur Tester la connexion avec un profil ayant le tunnel SSH activé, Calíope exécute la séquence complète :

1. Ouvre une connexion TCP vers le bastion SSH (hôte SSH : port SSH)
2. Négocie le protocole SSH et s'authentifie avec les identifiants configurés
3. Ouvre un canal direct-tcpip vers l'hôte MySQL depuis le bastion
4. Lance un proxy local sur un port éphémère de 127.0.0.1
5. Connecte MySQLKit à ce port local et exécute SELECT 1
6. Ferme le tunnel à la fin du test

Si le test réussit, vous verrez la bannière verte avec la version du serveur MySQL. En cas d'échec, le message d'erreur indiquera à quelle étape le problème s'est produit (authentification SSH, hôte MySQL inaccessible, identifiants MySQL incorrects, etc.).

Mots-clés : tester ssh, test tunnel, vérifier tunnel, tester connexion ssh, bannière verte

Vérification de la clé d'hôte SSH du serveur

Calíope vérifie l'empreinte du serveur SSH pour vous protéger des attaques MITM.

Où le trouver : Gestionnaire de connexions › Alerte de clé SSH

Lorsque Calíope se connecte à un serveur SSH pour la première fois, il affiche l'empreinte SHA256 de sa clé publique et demande une confirmation avant de continuer. Ce comportement est équivalent à StrictHostKeyChecking=yes dans OpenSSH.

Première connexion :
Calíope affiche l'empreinte et vous demande de confirmer qu'elle correspond au serveur attendu. Appuyez sur Faire confiance et connecter pour l'accepter. L'empreinte est enregistrée dans le Trousseau de votre appareil.

Connexions ultérieures :
Si l'empreinte du serveur correspond à celle enregistrée, la connexion se poursuit sans interruption.

Si la clé a changé :
Calíope affiche un avertissement en rouge : la clé du serveur a changé. Cela peut indiquer :
- Que l'administrateur a régénéré la clé (courant après des réinstallations ou migrations).
- Une éventuelle attaque de l'homme du milieu (MITM) sur des réseaux non fiables.

Confirmez avec l'administrateur avant d'appuyer sur Mettre à jour et connecter.

Supprimer une clé enregistrée :
Pour forcer une nouvelle vérification, supprimez l'empreinte du Trousseau avec l'application Accès au trousseau en recherchant caliope.ssh.hostkey.

Mots-clés : ssh, clé hôte, host key, empreinte, fingerprint, mitm, vérification, clé serveur, known hosts, sécurité ssh, sha256

Résoudre les problèmes du tunnel SSH

Erreurs courantes du tunnel SSH et comment les résoudre.

« Connection refused » lors de la connexion au bastion
Vérifiez que l'hôte SSH et le port (par défaut 22) sont corrects et que le pare-feu du bastion autorise les connexions entrantes sur ce port.

« Authentication failed » ou aucune réponse du bastion
Pour le mot de passe : vérifiez le nom d'utilisateur et le mot de passe SSH. Pour la clé privée : assurez-vous que la clé publique correspondante se trouve dans ~/.ssh/authorized_keys sur le bastion et que le serveur autorise l'authentification par clé publique (PubkeyAuthentication yes dans /etc/ssh/sshd_config).

« La phrase secrète de la clé privée SSH est incorrecte »
La clé a été lue et la phrase secrète ne la déchiffre pas. Vérifiez le champ Phrase secrète du profil ; ce n'est ni le mot de passe de l'utilisateur SSH ni celui de la base de données.

« Type de clé SSH non pris en charge : ssh-rsa »
Les clés RSA ne sont pas compatibles. Générez une clé ED25519 et ajoutez sa clé publique au bastion.

« Le fichier de clé SSH n'est pas dans un format valide »
La clé doit être au format OpenSSH natif. Convertissez-la avec : ssh-keygen -p -m OpenSSH -f votre_cle

MySQL inaccessible depuis le bastion
Le champ Hôte du profil doit être l'hôte MySQL tel que vu depuis le bastion. Essayez 127.0.0.1 si MySQL se trouve sur le même serveur que le bastion, ou utilisez l'IP privée (p. ex. 10.0.1.5) s'il se trouve sur une autre machine du même réseau.

Le tunnel fonctionne mais MySQL refuse la connexion
Les identifiants MySQL (nom d'utilisateur/mot de passe) sont indépendants des identifiants SSH. Vérifiez que l'utilisateur MySQL a l'autorisation de se connecter depuis 127.0.0.1 ou depuis l'IP du bastion.

Mots-clés : erreur ssh, dépannage, troubleshooting, connection refused, authentication failed, format invalide, rsa non pris en charge, passphrase

Vérifier l'empreinte SSH du serveur (known hosts)

Comment Calíope authentifie l'identité du serveur SSH et que faire lorsque le dialogue d'empreinte nouvelle ou modifiée apparaît.

La première fois que vous vous connectez à un serveur SSH, Calíope ne connaît pas encore sa clé publique. Avant de compléter le tunnel, l'application vous montre l'empreinte SHA-256 de la clé afin que vous la vérifiiez et décidiez de lui faire confiance.

La boîte de dialogue apparaît pour toute action qui ouvre le tunnel, pas seulement à la connexion : tester une connexion ou charger les bases d'un profil pose la même question, et accepter y enregistre l'empreinte de la même façon.

Format de l'empreinte
- Calíope calcule l'empreinte exactement comme ssh-keygen -l -E sha256, au format SHA256:<base64-sans-padding>.
- Vous pouvez obtenir la même empreinte sur le serveur avec : ssh-keygen -l -f /etc/ssh/ssh_host_ed25519_key.pub -E sha256.

Dialogue « Serveur inconnu » (nouvelle empreinte)
- Icône orange de bouclier barré.
- Affiche hôte:port et l'empreinte reçue.
- Faire confiance et se connecter — enregistre l'empreinte dans le Trousseau du système sous l'identifiant caliope.ssh.hostkey.<host>:<port> et procède au tunnel.
- Annuler — abandonne la connexion sans rien enregistrer.

Dialogue « L'empreinte du serveur a changé » (alerte rouge)
- Icône rouge de bouclier avec exclamation.
- Apparaît lorsque l'empreinte reçue NE correspond PAS à celle que vous aviez enregistrée. Cela peut indiquer :
- Que l'administrateur a fait tourner la clé du serveur (cas légitime).
- Qu'un autre serveur répond sur la même IP/port (attaque MITM possible).
- Affiche les deux empreintes : l'ancienne connue et la nouvelle, côte à côte.
- Mettre à jour et se connecter — écrase l'empreinte enregistrée et se connecte. À n'utiliser qu'après avoir confirmé la rotation par un canal hors-bande.
- Annuler — conserve l'ancienne empreinte et abandonne.

Réinitialiser une empreinte connue
- Il n'y a pas encore d'UI pour supprimer une empreinte individuelle, mais vous pouvez forcer la re-vérification en supprimant l'entrée du Trousseau (Trousseaux d'accès › compte caliope.ssh.hostkey.host:port) et en vous reconnectant.
- Réinstaller Calíope efface toutes les empreintes et vous reverrez le dialogue « Serveur inconnu » à la prochaine connexion.

Bonnes pratiques
- Comparez l'empreinte à celle envoyée par l'administrateur du serveur via un canal sécurisé (message signé, site HTTPS, etc.).
- Si le dialogue rouge apparaît sans raison apparente, annulez et vérifiez avec l'administrateur avant d'accepter.

Mots-clés : ssh, empreinte, fingerprint, known hosts, sha256, confiance, trust, mitm, sécurité, changement empreinte, mise à jour empreinte, trousseau, keychain, ed25519, ecdsa