Le nœud SSH génère une erreur « The connection is closed by SSH Server Current FSM is Disconnect »

Décrivez le problème/l’erreur/la question

Nous essayons de nous connecter en SSH à un routeur depuis notre serveur n8n auto-hébergé, mais nous avons reçu cette erreur : « La connexion est fermée par le serveur SSH. L’état FSM actuel est Disconnect. » Que devons-nous vérifier et comment résoudre ce problème ? Tous les identifiants SSH et la connectivité sont correctement configurés.

Quel est le message d’erreur (le cas échéant) ?

Veuillez partager votre workflow

(Sélectionnez les nœuds sur votre canvas et utilisez les raccourcis clavier CMD+C/CTRL+C et CMD+V/CTRL+V pour copier et coller le workflow.)
{
  "nodes": [
    {
      "parameters": {},
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [
        -192,
        144
      ],
      "id": "2df66140-18f8-4cfb-8e88-f3b9551038ca",
      "name": "When clicking 'Execute workflow'"
    },
    {
      "parameters": {
        "command": "display version"
      },
      "type": "n8n-nodes-base.ssh",
      "typeVersion": 1,
      "position": [
        16,
        144
      ],
      "id": "e947c9ba-d828-4490-8ad1-e5a99b5cf292",
      "name": "Execute a command",
      "alwaysOutputData": true,
      "credentials": {
        "sshPassword": {
          "name": "SSH Password account"
        }
      }
    }
  ],
  "connections": {
    "When clicking 'Execute workflow'": {
      "main": [
        [
          {
            "node": "Execute a command",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "pinData": {},
  "meta": {
    "templateCredsSetupCompleted": true,
    "instanceId": "3d1b8feb96140bbc11a6a410c27c7cb04f42940da43d0df2759b46942c8c8350"
  }
}

Partagez la sortie renvoyée par le dernier nœud

{
  "errorMessage": "La connexion est fermée par le serveur SSH\r\nL'état FSM actuel est Disconnect",
  "errorDetails": {},
  "n8nDetails": {
    "n8nVersion": "2.18.5 (Self Hosted)",
    "binaryDataMode": "filesystem",
    "stackTrace": [
      "Error: La connexion est fermée par le serveur SSH\r",
      "L'état FSM actuel est Disconnect",
      "    at DISCONNECT (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/ssh2@1.15.0/node_modules/ssh2/lib/client.js:342:25)",
      "    at 1 (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/ssh2@1.15.0/node_modules/ssh2/lib/protocol/handlers.misc.js:53:16)",
      "    at Protocol.onPayload (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/ssh2@1.15.0/node_modules/ssh2/lib/protocol/Protocol.js:2059:10)",
      "    at GenericDecipherNative.decrypt (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/ssh2@1.15.0/node_modules/ssh2/lib/protocol/crypto.js:1269:26)",
      "    at Protocol.parsePacket [as _parse] (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/ssh2@1.15.0/node_modules/ssh2/lib/protocol/Protocol.js:2028:25)",
      "    at Protocol.parse (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/ssh2@1.15.0/node_modules/ssh2/lib/protocol/Protocol.js:313:16)",
      "    at Socket.<anonymous> (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/ssh2@1.15.0/node_modules/ssh2/lib/client.js:775:21)",
      "    at Socket.emit (node:events:508:28)",
      "    at addChunk (node:internal/streams/readable:563:12)",
      "    at readableAddChunkPushByteMode (node:internal/streams/readable:514:3)"
    ]
  }
}

Informations sur votre configuration n8n

  • Version n8n : 2.18.5
  • Base de données (par défaut : SQLite) : SQLite
  • Paramètre n8n EXECUTIONS_PROCESS (par défaut : own, main) :
  • Exécution de n8n via (Docker, npm, n8n cloud, application de bureau) : Docker
  • Système d’exploitation :

Merci de nous l’avoir signalé. Nous avons créé CV-5 comme ticket de développement interne pour l’examiner.

Salut @ibtihal Bienvenue !
Le nœud SSH s’exécute sur la bibliothèque ssh2, qui ne négociera pas les algorithmes d’échange de clés, de chiffrement et de clé d’hôte hérités que les routeurs de style Huawei/Comware (votre commande display version) nécessitent toujours, donc le routeur abandonne la session et vous obtenez « Current FSM is Disconnect ». Le nœud n’a aucun champ pour ajouter ces algorithmes.
Routez via un hôte de saut à la place : une petite boîte Linux qui peut parler les algorithmes hérités. Pointez le nœud SSH sur cette boîte et faites-la exécuter la commande du routeur avec les anciennes options, par exemple :

ssh -oKexAlgorithms=+diffie-hellman-group14-sha1 -oHostKeyAlgorithms=+ssh-rsa -oCiphers=+aes128-cbc user@router-ip "display version"

Voir ceci :

Nous avons examiné ce problème et avons confirmé qu’il s’agit très probablement d’un bug. Il a été transmis à l’une de nos équipes d’ingénierie pour être résolu.

Salut, merci pour l’explication.

Pouviez-vous clarifier quels algorithmes d’échange de clés SSH, de chiffrement et de clés d’hôte spécifiques sont pris en charge ou utilisés par le nœud SSH n8n (bibliothèque ssh2) ?

Ce sont les valeurs par défaut de la bibliothèque ssh2, et le nœud ne propose aucune option algorithms pour les modifier, donc cette liste est exactement ce qu’il offre sur le fil.

Proposé par défaut :

kex:           curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group14-sha256, diffie-hellman-group15-sha512, diffie-hellman-group16-sha512, diffie-hellman-group17-sha512, diffie-hellman-group18-sha512
serverHostKey: ssh-ed25519, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384, ecdsa-sha2-nistp521, rsa-sha2-512, rsa-sha2-256, ssh-rsa
cipher:        chacha20-poly1305@openssh.com, aes128-gcm, aes128-gcm@openssh.com, aes256-gcm, aes256-gcm@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr
hmac:          hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1

Compilé dans ssh2 mais jamais proposé sauf s’il est passé explicitement, ce que le nœud ne peut pas faire :

kex:           diffie-hellman-group-exchange-sha1, diffie-hellman-group14-sha1, diffie-hellman-group1-sha1
serverHostKey: ssh-dss
cipher:        3des-cbc, aes256-cbc, aes192-cbc, aes128-cbc, arcfour256, arcfour128, arcfour, blowfish-cbc, cast128-cbc
hmac:          hmac-md5, hmac-sha2-256-96, hmac-sha2-512-96, hmac-ripemd160, hmac-sha1-96, hmac-md5-96

ssh-rsa est déjà dans la liste des clés d’hôte par défaut, donc la clé d’hôte n’est pas l’endroit où votre routeur échoue. Le problème vient de kex et cipher, généralement diffie-hellman-group14-sha1 associé à aes128-cbc ou 3des-cbc sur cette classe d’appareil. Si le routeur peut être configuré pour accepter également diffie-hellman-group14-sha256 et aes128-ctr, le nœud SSH le joint directement et l’hôte de saut n’est plus nécessaire.