← Hub Debug
Administration serveur · KDE · SSH

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.

Ubuntu 24.04 Dolphin / KDE Plasma KIO-SFTP OpenSSH

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) :

Dolphin - barre d'adresse (Ctrl+L)
sftp://etudiant@monserveur.exemple/var/www

Et on obtient systématiquement le même message, peu importe le nombre d'essais :

Connexion SFTP → ✕ Impossible de se connecter → On réessaie… ↺

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 :

Explication

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

Solution A · ponctuelle
Pré-enregistrer la clé du serveur

On ajoute manuellement la clé d'hôte dans known_hosts avec ssh-keyscan. Simple et ciblé, mais à refaire pour chaque nouveau serveur.

Solution B · permanente
Accepter automatiquement les nouvelles clés

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 :

Terminal
# Récupérer la clé du serveur et l'ajouter aux hôtes connus
$ ssh-keyscan monserveur.exemple >> ~/.ssh/known_hosts
Astuce

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 :

~/.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 :

~/.ssh/config - version restreinte
# 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
Attention

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 :

Terminal
# 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 :

  1. Dans Dolphin, affichez la barre d'adresse en mode texte avec Ctrl+L, puis tapez l'adresse complète :

    Dolphin - barre d'adresse
    sftp://etudiant@monserveur.exemple/var/www
  2. 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.

  3. Le contenu du dossier distant s'affiche. Ajoutez-le aux emplacements avec Ctrl+D (ou menu Fichier → Ajouter aux emplacements).

  4. 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 ».

Vérification

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é