generate_key() calculait une vraie empreinte SHA256, mais import_key() prenait
juste pub_text.split()[1][:16] - un fragment de base64, pas une empreinte.
- compute_fingerprint(public_key_line) : fonction unique (format
"SHA256:xxxx...", comme ssh-keygen -lf), utilisee par generate_key() et
import_key().
- KeyManager.load() corrige silencieusement les entrees existantes dont
l'empreinte ne correspond pas a compute_fingerprint(public_key_text) (cas
des cles importees avant ce correctif), et resauvegarde si necessaire.
Ce commit branche aussi dans KeyManager les deux mecanismes ajoutes par les
commits precedents : generate_key() ecrit desormais via
app.storage.json_store (schema_version=1, .bak, ecriture atomique) et protege
la cle privee avec app.security.key_protection.protect_private_key() a la
place du chmod(0o600) precedent.
Verifie par tests/test_atomic_storage.py (recalcul d'une empreinte tronquee
au chargement) et tests/test_keys.py (format SHA256: pour toutes les cles
generees).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Choisir entre Ed25519, trois courbes NIST et RSA n'a de sens que si l'on sait
ce qu'elles impliquent. Chaque type dispose desormais d'un resume, affiche a la
fois en info-bulle dans la liste deroulante et sous le formulaire, mis a jour a
chaque changement de selection.
Chaque resume indique la courbe (ou l'absence de courbe pour RSA), l'equivalence
de robustesse avec RSA selon les recommandations du NIST (SP 800-57), la
compatibilite OpenSSH, et le cas d'usage : Ed25519 par defaut, ECDSA quand une
politique de conformite impose les courbes NIST, RSA pour du materiel ancien.
La reserve sur l'origine jamais expliquee des parametres des courbes NIST est
mentionnee, puisqu'elle motive le choix d'Ed25519 par defaut.
Le champ de taille en bits, qui ne concerne que RSA, est desormais active par la
meme fonction : un seul endroit gere la reaction au changement de type.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Le panneau des sessions etait declare Movable|Floatable mais pas Closable : il
n'avait donc aucun bouton de fermeture et ne pouvait pas etre masque. Sa largeur
plancher etait par ailleurs imposee par son contenu, ce qui empechait de le
retrecir vraiment.
- ajout de DockWidgetClosable, largeur minimale ramenee a 120 px
- bascule par F9, par le menu Affichage, ou par la croix du panneau, les trois
restant synchronises
- separateur elargi a 6 px et surligne au survol, pour etre attrape facilement
Generation de cles : ajout d'ECDSA sur les courbes NIST P-256, P-384 et P-521,
en plus d'Ed25519 et RSA. Ed25519 reste le choix par defaut : c'est aussi une
courbe elliptique (Curve25519), plus courte et plus rapide, et sans les
interrogations qui entourent le choix des parametres des courbes NIST. Chaque
type est verifie relisible par paramiko, donc utilisable pour se connecter.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Reunit en un seul outil les fonctions utiles de MobaXterm, Termius et Bitvise,
sans compte ni service tiers, avec toutes les donnees en local.
- Terminaux multi-onglets : sessions SSH et terminaux Windows locaux
(PowerShell / cmd) via la pseudo-console native ConPTY
- Gestionnaire de fichiers SFTP facon WinSCP : double panneau, colonnes
triables, glisser-deposer, renommage, permissions, file de transferts.
Ouvrable sur une connexion en cours sans creer de favori
- Gestion des cles SSH : generation Ed25519/RSA, import, export
- Gestion du fichier known_hosts, avec remplacement guide d'une cle d'hote
modifiee (cas frequent des serveurs en DHCP)
- Trois themes (clair, bleu nuit, noir), commutables a chaud
- Authentification automatique reprenant le comportement de la commande ssh
(agent SSH et cles ~/.ssh), mot de passe demande seulement en secours
Aucun mot de passe n'est stocke sur le disque.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>