Date : 15/02/2026
Status : EN ATTENTE
Projet : connectors-api
Fichier : src/services/ssh.ts
L'endpoint POST /api/ssh/setup-key genere des cles SSH inutilisables :
convertToOpenSSH() met du SPKI DER brut en format ssh-rsa (le format SSH wire est different du format SPKI)generateKeyPairSync('rsa', { privateKeyEncoding: { type: 'pkcs8' } }) genere du PKCS#8, que ssh2 ne parse pas → erreur "Cannot parse privateKey: Unsupported key format"password_encrypted: undefined), donc si la cle est cassee, plus aucune methode d'auth ne fonctionneImpact : toute instance SSH avec PasswordAuthentication no (ex: nginx) est inaccessible apres setup-key.
Utiliser ssh2.utils.generateKeyPairSync('ed25519') — la lib SSH elle-meme genere les cles dans le format exact qu'elle consomme.
Teste dans le container :
ssh-ed25519 AAAA... comment (format authorized_keys)-----BEGIN OPENSSH PRIVATE KEY----- (format OpenSSH)ssh2.utils.parseKey(privateKey) → OKsrc/services/ssh.tssetupAutoKey (lignes ~976-1028)Avant :
const { generateKeyPairSync } = await import('crypto');
const { publicKey, privateKey } = generateKeyPairSync('rsa', {
modulusLength: 4096,
publicKeyEncoding: { type: 'spki', format: 'pem' },
privateKeyEncoding: { type: 'pkcs8', format: 'pem' }
});
const sshPublicKey = this.convertToOpenSSH(publicKey, `${config.username}@connectors-hub`);
Apres :
import { utils as sshUtils } from 'ssh2';
// ...
const keys = sshUtils.generateKeyPairSync('ed25519', {
comment: `${config.username}@connectors-hub`
});
const sshPublicKey = keys.public.trim();
const privateKey = keys.private;
Avant :
const newConfig: SSHConfig = {
...config,
auth_method: 'auto_key',
private_key_encrypted: encrypt(privateKey),
password_encrypted: undefined, // ← SUPPRIME le password
key_installed: true
};
Apres :
const newConfig: SSHConfig = {
...config,
auth_method: 'auto_key',
private_key_encrypted: encrypt(privateKey),
// password_encrypted conserve — fallback si la cle ne marche pas
key_installed: true
};
convertToOpenSSH (lignes ~1033-1043)Methode inutile et cassee. Plus utilisee.
PasswordAuthentication yes sur nginxsetup-key pour nginx-SSH (avec le code corrige)PasswordAuthentication nossh/execute sur nginx-SSH| Fichier | Action |
|---|---|
src/services/ssh.ts |
Fix setupAutoKey + supprimer convertToOpenSSH |
utils depuis ssh2 est deja une dependance du projet