Connexion SFTP dans Dolphin
régler la boucle « Impossible de se connecter »
Sur Ubuntu 24.04, Dolphin refuse la connexion SFTP tant que la clé du serveur n'est pas déjà connue - et il ne propose jamais de l'accepter. Voici pourquoi, et comment régler ça une fois pour toutes.
01Le symptôme
On tape une adresse SFTP dans la barre d'adresse de Dolphin (ou on crée un raccourci via le bouton Réseau) :
sftp://etudiant@monserveur.exemple/var/www
Et on obtient systématiquement le même message, peu importe le nombre d'essais :
Le piège : la connexion SSH en ligne de commande vers le même serveur, avec le même compte, fonctionne parfaitement. Ce n'est donc ni le serveur, ni le pare-feu, ni le mot de passe.
02La cause réelle
Dolphin ne passe pas par le client OpenSSH que vous utilisez au terminal. Il utilise sa propre couche, KIO-SFTP (basée sur libssh). Et cette couche a une exigence stricte sur Ubuntu 24.04 :
KIO-SFTP exige que la clé d'hôte du serveur soit déjà présente dans le fichier ~/.ssh/known_hosts. Contrairement au client OpenSSH, il n'affiche aucune boîte de dialogue pour accepter la clé d'un serveur inconnu : il refuse la connexion, point. D'où la boucle.
Rappel : c'est quoi, une clé d'hôte ?
À la première connexion SSH vers un serveur, celui-ci présente sa clé publique - son « empreinte digitale ». Le client la stocke dans known_hosts et, aux connexions suivantes, vérifie que la clé n'a pas changé. C'est ce qui protège contre les attaques de type machine-in-the-middle : si quelqu'un se fait passer pour votre serveur, sa clé ne correspondra pas et la connexion sera bloquée.
Au terminal, c'est la fameuse question Are you sure you want to continue connecting (yes/no)?. Dolphin, lui, ne pose jamais la question.
03Les deux solutions
On ajoute manuellement la clé d'hôte dans known_hosts avec ssh-keyscan. Simple et ciblé, mais à refaire pour chaque nouveau serveur.
On configure le client SSH avec StrictHostKeyChecking accept-new. Réglé une fois, fonctionne pour tous les serveurs, actuels et futurs.
Solution A - ssh-keyscan (au cas par cas)
Sans ouvrir de session SSH, on interroge le serveur pour récupérer sa clé publique et on l'ajoute au fichier :
# Récupérer la clé du serveur et l'ajouter aux hôtes connus
$ ssh-keyscan monserveur.exemple >> ~/.ssh/known_hosts
Si le fichier ou le dossier n'existe pas encore (machine fraîchement installée), créez-les d'abord : mkdir -p ~/.ssh && chmod 700 ~/.ssh. SSH est pointilleux sur les permissions.
Solution B - accept-new (recommandée)
On indique au client SSH d'accepter automatiquement la clé de tout serveur jamais rencontré, tout en continuant de refuser une clé qui aurait changé. Créez ou modifiez le fichier ~/.ssh/config :
# Accepter automatiquement les clés des serveurs inconnus,
# mais refuser toute clé modifiée (protection contre l'interception)
Host *
StrictHostKeyChecking accept-new
Le motif Host * applique la règle à tous les serveurs. Pour restreindre la règle à certains domaines seulement :
# S'applique aux sous-domaines ET au domaine racine
# (le joker *.exemple.com ne couvre PAS exemple.com : il faut le lister)
Host *.exemple.com exemple.com
StrictHostKeyChecking accept-new
N'utilisez jamais StrictHostKeyChecking no : cette valeur accepte aussi les clés modifiées, ce qui annule complètement la protection contre l'interception. La bonne valeur est accept-new.
| Valeur | Serveur inconnu | Clé modifiée | Verdict |
|---|---|---|---|
ask (défaut) |
Demande confirmation (mais Dolphin ne sait pas demander → échec) | Refusée | Sécuritaire, mais cause la boucle dans Dolphin |
accept-new |
Acceptée automatiquement | Refusée | ✓ Recommandée |
no |
Acceptée | Acceptée aussi ! | ✕ Dangereuse - à proscrire |
Variante : configuration pour tous les comptes de la machine
Pour appliquer la règle à l'échelle du système (par exemple sur un poste de laboratoire partagé), créez plutôt un fichier de configuration globale - aucun compte utilisateur à modifier :
# Créer une règle SSH globale (nécessite les droits administrateur)
$ echo -e "Host *\n StrictHostKeyChecking accept-new" | sudo tee /etc/ssh/ssh_config.d/99-labo.conf
04Créer le raccourci dans Dolphin
Une fois la solution A ou B en place, la connexion fonctionne. Reste à créer le signet :
-
Dans Dolphin, affichez la barre d'adresse en mode texte avec Ctrl+L, puis tapez l'adresse complète :
sftp://etudiant@monserveur.exemple/var/www -
Entrez le mot de passe du compte lorsque Dolphin le demande. Cochez « Retenir le mot de passe » si le portefeuille KDE (KWallet) est activé - sinon il sera redemandé à chaque connexion.
-
Le contenu du dossier distant s'affiche. Ajoutez-le aux emplacements avec Ctrl+D (ou menu Fichier → Ajouter aux emplacements).
-
Le signet apparaît dans le panneau latéral gauche. Clic droit → Modifier pour lui donner un nom parlant, par exemple « Serveur web - /var/www ».
En cas de doute, testez la couche KIO directement au terminal - la même que Dolphin utilise : kioclient5 ls sftp://etudiant@monserveur.exemple/var/www. Si cette commande fonctionne, Dolphin fonctionnera aussi.
05En résumé
- Le problème : KIO-SFTP (Dolphin) exige une clé d'hôte déjà connue et ne sait pas demander de l'accepter.
- Solution ponctuelle :
ssh-keyscan serveur >> ~/.ssh/known_hostspour chaque serveur. - Solution permanente :
StrictHostKeyChecking accept-newdans la configuration SSH (utilisateur ou système). - Jamais
StrictHostKeyChecking no- cela désactive la protection contre les clés falsifiées. - Le raccourci : adresse SFTP dans la barre (Ctrl+L), puis Ctrl+D pour l'épingler aux emplacements.