Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
ssh3 — Protocole shell rapide et sécurisé basé sur HTTP/3, QUIC et TLS 1.3. Prend en charge OAuth2, OpenID Connect et l'authentification SSH classique avec le transfert de ports UDP et les capacités de serveur caché. | Kitploit
Outils/GitHubGitHub/francoismichel/ssh3
Outils de Chiffrement/DéchiffrementSécurité RéseauUtilitaires et FrameworksAuthentification
GitHubfrancoismichel/ssh3

ssh3

Protocole shell rapide et sécurisé basé sur HTTP/3, QUIC et TLS 1.3. Prend en charge OAuth2, OpenID Connect et l'authentification SSH classique avec le transfert de ports UDP et les capacités de serveur caché.

Voir le dépôt
5.0k11815il y a 2 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Site web

[!NOTE] SSH3 va probablement changer de nom. Il s'agit toujours du protocole de connexion SSH (RFC4254) fonctionnant sur HTTP/3 Extended Connect, mais les modifications nécessaires sont lourdes et trop éloignées de la philosophie des implémentations SSH populaires pour être envisagées en vue d'une intégration. Le projet de spécification a déjà été renommé (« Remote Terminals over HTTP/3 »), mais nous avons besoin de temps pour trouver un joli nom permanent.

SSH3 : un shell sécurisé plus rapide et riche utilisant HTTP/3

SSH3 est une refonte complète du protocole SSH, mappant sa sémantique sur les mécanismes HTTP. Il est issu de nos travaux de recherche et nous (chercheurs) l'avons récemment proposé comme Internet-Draft (draft-michel-remote-terminal-http3-00).

En résumé, SSH3 utilise QUIC+TLS1.3 pour l'établissement d'un canal sécurisé et les mécanismes d'Autorisation HTTP pour l'authentification des utilisateurs. Entre autres, SSH3 permet les améliorations suivantes :

  • Établissement de session significativement plus rapide
  • Nouvelles méthodes d'authentification HTTP telles que OAuth 2.0 et OpenID Connect en plus de l'authentification SSH classique
  • Robustesse face aux attaques de balayage de ports : votre serveur SSH3 peut être rendu invisible pour les autres internautes
  • Transfert de port UDP en plus du transfert de port TCP classique
  • Toutes les fonctionnalités permises par le protocole moderne QUIC : y compris la migration de connexion (bientôt) et les connexions multivoies

[!TIP] Vous voulez démarrer rapidement ? Découvrez comment installer SSH3. Vous apprendrez à mettre en place un serveur SSH3 et à utiliser le client SSH3.

⚡ SSH3 est plus rapide

Plus rapide pour l'établissement de session, pas pour le débit ! SSH3 offre un établissement de session significativement plus rapide que SSHv2. Établir une nouvelle session avec SSHv2 peut prendre 5 à 7 allers-retours réseau, ce qui peut facilement être remarqué par l'utilisateur. SSH3 ne nécessite que 3 allers-retours. La latence des frappes dans une session en cours est inchangée.

SSH3 (haut) VS SSHv2 (bas) établissement de session avec un ping de 100ms vers le serveur.

🔒 Sécurité de SSH3

Alors que SSHv2 définit ses propres protocoles pour l'authentification des utilisateurs et l'établissement de canaux sécurisés, SSH3 s'appuie sur les mécanismes robustes et éprouvés de TLS 1.3, QUIC et HTTP. Ces protocoles sont déjà largement utilisés pour sécuriser des applications critiques pour la sécurité sur Internet, comme le commerce en ligne et les services bancaires en ligne.

SSH3 implémente déjà les méthodes d'authentification courantes par mot de passe et par clé publique (RSA et EdDSA/ed25519). Il supporte également de nouvelles méthodes d'authentification telles que OAuth 2.0 et permet de vous connecter à vos serveurs en utilisant vos comptes Google/Microsoft/Github.

🧪 SSH3 est encore expérimental

Bien que SSH3 montre des promesses pour un établissement de session plus rapide, il en est encore à un stade précoce de preuve de concept. Comme pour tout nouveau protocole complexe, un examen cryptographique expert sur une période prolongée est nécessaire avant de pouvoir tirer des conclusions de sécurité raisonnables.

Nous développons SSH3 en tant que projet open source pour faciliter les retours et l'analyse de la communauté. Cependant, nous ne pouvons pas encore approuver son adéquation pour des systèmes de production sans examen supplémentaire par des pairs. Veuillez collaborer avec nous si vous avez l'expertise appropriée !

🥷 Ne déployez pas le serveur SSH3 sur vos serveurs de production pour l'instant

Compte tenu de l'état actuel du prototype, nous conseillons de tester SSH3 dans des environnements sandbox ou des réseaux privés. Sachez que rendre des serveurs expérimentaux directement accessibles sur Internet pourrait introduire des risques avant un examen de sécurité approfondi.

Bien que cacher les serveurs derrière des chemins secrets présente des avantages potentiels, cela ne supprime pas la nécessité d'une analyse rigoureuse des vulnérabilités avant la mise en production. Nous sommes enthousiastes quant aux possibilités futures de SSH3 mais encourageons un examen supplémentaire au préalable.

🥷 Votre serveur public SSH3 peut être caché

Avec SSH3, vous pouvez éviter le stress habituel des attaques de balayage et de dictionnaire contre votre serveur SSH. Comme pour vos documents Google Drive secrets, votre serveur SSH3 peut être caché derrière un lien secret et ne répondre qu'aux tentatives d'authentification qui ont effectué une requête HTTP à ce lien spécifique, comme suit :

root@kitploit:~
ssh3-server -bind 192.0.2.0:443 -url-path <my-long-secret>

En remplaçant <my-long-secret> par, disons, la valeur aléatoire M3MzkxYWMxMjYxMjc5YzJkODZiMTAyMjU, votre serveur SSH3 ne répondra qu'aux tentatives de connexion SSH3 adressées à l'URL https://192.0.2.0:443/M3MzkxYWMxMjYxMjc5YzJkODZiMTAyMjU et répondra 404 Not Found aux autres requêtes. Les attaquants et robots d'exploration sur Internet ne peuvent donc pas détecter la présence de votre serveur SSH3. Ils ne verront qu'un simple serveur web répondant des codes de statut 404 à chaque requête.

À NOTER : placer votre serveur SSH3 derrière une URL secrète peut réduire l'impact des attaques par balayage mais ne remplacera et ne doit jamais remplacer les mécanismes d'authentification classiques. Le lien secret ne devrait être utilisé que pour éviter que votre hôte ne soit découvert. Connaître l'URL secrète ne devrait pas donner accès à votre serveur. Utilisez les mécanismes d'authentification classiques décrits ci-dessus pour protéger votre serveur.

💐 SSH3 est déjà riche en fonctionnalités

SSH3 offre de nouvelles fonctionnalités que le protocole SSHv2 ne pouvait pas fournir.

Nouvelles fonctionnalités inédites

  • Transfert de port UDP : vous pouvez désormais accéder à vos serveurs QUIC, DNS, RTP ou tout serveur basé sur UDP qui n'est accessible que depuis votre hôte SSH3. Les paquets UDP sont transférés à l'aide de datagrammes QUIC.
  • Certificats X.509 : vous pouvez désormais utiliser vos certificats HTTPS classiques pour authentifier votre serveur SSH3. Ce mécanisme est plus sûr que le mécanisme classique de clé d'hôte SSHv2. Les certificats peuvent être obtenus facilement via LetsEncrypt par exemple.
  • Cacher votre serveur derrière un lien secret.
  • Authentification utilisateur sécurisée sans clé via OpenID Connect. Vous pouvez vous connecter à votre serveur SSH3 en utilisant le SSO de votre entreprise ou votre compte Google/Github, et vous n'avez plus besoin de copier les clés publiques de vos utilisateurs.

Fonctionnalités célèbres d'OpenSSH implémentées

Cette implémentation de SSH3 fournit déjà de nombreuses fonctionnalités populaires d'OpenSSH, donc si vous avez l'habitude d'OpenSSH, le processus d'adoption de SSH3 sera fluide. Voici une liste de certaines fonctionnalités d'OpenSSH que SSH3 implémente également :

  • Analyse de ~/.ssh/authorized_keys sur le serveur
  • Authentification du serveur basée sur certificat
  • Mécanisme known_hosts lorsque les certificats X.509 ne sont pas utilisés.
  • Utilisation automatique de ssh-agent pour l'authentification par clé publique
  • Transfert de l'agent SSH pour utiliser vos clés locales sur votre serveur distant
  • Transfert de port TCP direct (le transfert de port inversé sera implémenté à l'avenir)
  • Saut proxy (voir le paramètre -proxy-jump). Si A est un client SSH3 et B et C sont tous deux des serveurs SSH3, vous pouvez vous connecter de A à C en utilisant B comme passerelle/proxy. Le proxy utilise le transfert UDP pour transférer les paquets QUIC de A à C, donc B ne peut pas déchiffrer le trafic SSH3 A<->C.
  • Analyse de ~/.ssh/config sur le client et gestion des options de configuration Hostname, User, Port et IdentityFile (les autres options sont actuellement ignorées). Analyse également une nouvelle option UDPProxyJump qui se comporte de manière similaire à ProxyJump d'OpenSSH.

🙏 Soutien de la communauté

Aidez-nous à faire progresser SSH3 de manière responsable ! Nous accueillons les chercheurs en sécurité compétents pour examiner notre code et fournir des retours. Veuillez également nous mettre en relation avec les organismes de normalisation compétents pour potentiellement faire avancer SSH3 via les processus formels de l'IETF/IRTF au fil du temps.

Avec une assistance collaborative, nous espérons améliorer SSH3 de manière itérative pour atteindre une maturité de production sûre. Mais nous ne pouvons pas faire de déclarations de sécurité définitives crédibles sans preuve d'un examen cryptographique expert approfondi et d'une adoption par des autorités de sécurité respectées. Travaillons ensemble pour réaliser les possibilités de SSH3 !

Installation de SSH3

Vous pouvez soit télécharger les binaires de la dernière version, l'installer en utilisant go install ou générer ces binaires vous-même en compilant le code source.

[!TIP] SSH3 est encore expérimental et est le fruit d'un travail de recherche. Si vous craignez de déployer publiquement un nouveau serveur SSH3, vous pouvez utiliser la fonctionnalité de chemin secret de SSH3 pour le cacher derrière une URL secrète.

Installation de ssh3 et ssh3-server avec Go install

root@kitploit:~
go install github.com/francoismichel/ssh3/cmd/...@latest

Compilation de SSH3 à partir des sources

Vous avez besoin d'une version récente de Golang pour cela. Télécharger le code source et compiler les binaires peut se faire avec les étapes suivantes :

root@kitploit:~
git clone https://github.com/francoismichel/ssh3    # cloner le dépôt
cd ssh3
go build -o ssh3 cmd/ssh3/main.go                        # construire le client
CGO_ENABLED=1 go build -o ssh3-server cmd/ssh3-server/main.go   # construire le serveur, nécessite d'avoir gcc installé

Si vous avez les privilèges root/sudo et que vous souhaitez rendre ssh3 accessible à tous vos utilisateurs, vous pouvez ensuite copier directement les binaires dans /usr/bin :

root@kitploit:~
cp ssh3 /usr/bin/ && cp ssh3-server /usr/bin

Sinon, vous pouvez simplement ajouter les exécutables à votre variable d'environnement PATH en ajoutant la ligne suivante à la fin de votre .bashrc ou équivalent :

root@kitploit:~
export PATH=$PATH:/chemin/vers/le/dossier/ssh3

Déploiement d'un serveur SSH3

Avant de vous connecter à votre hôte, vous devez déployer un serveur SSH3 sur celui-ci. Il n'y a actuellement pas de démon SSH3, donc pour l'instant, vous devrez exécuter l'exécutable ssh3-server en arrière-plan en utilisant screen ou un utilitaire similaire.

[!NOTE] Comme SSH3 fonctionne sur HTTP/3, un serveur a besoin d'un certificat X.509 et de sa clé privée correspondante. Des certificats publics peuvent être générés automatiquement pour votre nom de domaine public via Let's Encrypt en utilisant l'argument de ligne de commande -generate-public-cert sur le serveur. Si vous ne souhaitez pas générer un certificat signé par une autorité de certification réelle ou si vous n'avez pas de nom de domaine public, vous pouvez en générer un auto-signé en utilisant l'argument -generate-selfsigned-cert. Les certificats auto-signés offrent des garanties de sécurité similaires au mécanisme de clé d'hôte SSHv2, avec le même problème de sécurité : vous pouvez être vulnérable aux attaques de type intermédiaire (MITM) lors de votre première connexion à votre serveur. L'utilisation de certificats réels signés par des autorités de certification publiques comme Let's Encrypt évite ce problème.

Voici l'utilisation de l'exécutable ssh3-server :

root@kitploit:~
Usage of ./ssh3-server:
  -bind string
        l'adresse:port à écouter, ex. 0.0.0.0:443 (par défaut "[::]:443")
  -cert string
        le nom du fichier du certificat serveur (ou chaîne complète) (par défaut "./cert.pem")
  -key string
        le nom du fichier de la clé privée du certificat (par défaut "./priv.key")
  -enable-password-login
        si défini, active l'authentification par mot de passe (désactivé par défaut)
  -generate-public-cert value
        Produire et utiliser automatiquement un certificat public valide via Let's Encrypt pour le nom de domaine fourni. Le drapeau peut être utilisé plusieurs fois pour générer plusieurs certificats. Si des certificats ont déjà été générés précédemment avec ce drapeau, ils seront simplement réutilisés sans être régénérés. Les certificats publics sont automatiquement renouvelés tant que le serveur est en cours d'exécution. Les certificats publics IP générés automatiquement ne sont pas encore disponibles.
  -generate-selfsigned-cert
        si défini, génère un certificat et une clé auto-signés qui seront stockés aux chemins indiqués par les arguments -cert et -key (ils ne doivent pas déjà exister)
  -url-path string
        le chemin d'URL secret sur lequel le serveur ssh3 écoute (par défaut "/ssh3-term")
  -v    mode verbeux, si défini
  -version
        si défini, affiche la version du logiciel sur la sortie standard et quitte

La commande suivante démarre un serveur SSH3 public sur le port 443 avec un certificat public Let's Encrypt valide pour le domaine my-domain.example.org et répond aux demandes de nouvelles sessions interrogeant le chemin d'URL /ssh3 :

root@kitploit:~
ssh3-server -generate-public-cert my-domain.example.org -url-path /ssh3

Si vous n'avez pas de nom de domaine public (c'est-à-dire seulement une adresse IP), vous pouvez soit utiliser un certificat existant pour votre adresse IP en utilisant les arguments -cert et -key, soit générer un certificat auto-signé en utilisant l'argument -generate-selfsigned-cert.

Si vous avez des certificats et des clés existants, vous pouvez exécuter le serveur comme suit pour les utiliser :

root@kitploit:~
ssh3-server -cert /chemin/vers/certificat/ou/chaîne -key /chemin/vers/cle/privée/certificat -url-path /ssh3

[!NOTE] Comme pour OpenSSH, le serveur doit être exécuté avec les privilèges root pour se connecter en tant qu'autres utilisateurs.

Clés autorisées et identités autorisées

Par défaut, le serveur SSH3 recherche les identités dans les fichiers ~/.ssh/authorized_keys et ~/.ssh3/authorized_identities pour chaque utilisateur. ~/.ssh3/authorized_identities permet de nouvelles identités telles que OpenID Connect (oidc) discutées ci-dessous. Les types de clés populaires tels que rsa, ed25519 et les clés au format OpenSSH peuvent être utilisés.

Utilisation du client SSH3

Une fois que vous avez un serveur SSH3 en cours d'exécution, vous pouvez vous y connecter en utilisant le client SSH3 de manière similaire à ce que vous faisiez avec votre outil SSHv2 classique.

Voici l'utilisation de l'exécutable ssh3 :

root@kitploit:~
Usage of ssh3:
  -pubkey-for-agent string
        si défini, utilise une clé d'agent dont la clé publique correspond à celle présente dans le chemin spécifié
  -privkey string
        fichier de clé privée
  -use-password
        si défini, effectue une authentification classique par mot de passe
  -forward-agent
        si défini, transfère l'agent ssh pour être utilisé avec les connexions sshv2 sur l'hôte distant
  -forward-tcp string
        si défini, prend un transfert localport/remoteip@remoteport pour rediriger localhost@localport vers remoteip@remoteport
  -forward-udp string
        si défini, prend un transfert localport/remoteip@remoteport pour rediriger localhost@localport vers remoteip@remoteport
  -proxy-jump string
        si défini, effectue un saut proxy en utilisant l'hôte distant spécifié comme proxy
  -insecure
        si défini, ignore la vérification du certificat du serveur
  -keylog string
        Écrire les clés TLS QUIC et le secret maître dans le fichier keylog spécifié : uniquement à des fins de débogage
  -use-oidc string
        si défini, force l'utilisation d'OpenID Connect avec l'URL de l'émetteur spécifiée comme paramètre
  -oidc-config string
        Fichier de configuration JSON OpenID Connect contenant les champs "client_id" et "client_secret" nécessaires pour la plupart des fournisseurs d'identité
  -do-pkce
        si défini, effectue un challenge-réponse PKCE avec oidc
  -v    si défini, active le mode verbeux

Authentification par clé privée

Vous pouvez vous connecter à votre serveur SSH3 sur my-server.example.org écoutant sur /my-secret-path en utilisant la clé privée située dans ~/.ssh/id_rsa avec la commande suivante :

root@kitploit:~
ssh3 -privkey ~/.ssh/id_rsa [email protected]/my-secret-path

Authentification par clé privée basée sur l'agent

Le client SSH3 fonctionne avec l'agent OpenSSH et utilise la variable d'environnement classique SSH_AUTH_SOCK pour communiquer avec cet agent. Comme OpenSSH, SSH3 listera les clés fournies par l'agent SSH et se connectera en utilisant la première clé écoutée par l'agent par défaut. Si vous souhaitez spécifier une clé particulière à utiliser avec l'agent, vous pouvez soit spécifier directement la clé privée avec l'argument -privkey comme ci-dessus, soit spécifier la clé publique correspondante en utilisant l'argument -pubkey-for-agent. Cela vous permet de vous authentifier dans des situations où seul l'agent a un accès direct à la clé privée mais vous n'avez accès qu'à la clé publique.

Authentification par mot de passe

Bien que déconseillé, vous pouvez vous connecter à votre serveur en utilisant des mots de passe (si explicitement activé sur le ssh3-server) avec la commande suivante :

root@kitploit:~
ssh3 -use-password [email protected]/my-secret-path

Établissement de session basé sur la configuration

ssh3 analyse votre configuration OpenSSH. Actuellement, il ne gère que les options OpenSSH Hostname ; User, Port et IdentityFile. Il ajoute également une nouvelle option uniquement utilisée par SSH3, comme URLPath ou UDPProxyJump. URLPath vous permet d'omettre le chemin d'URL secret dans votre commande SSH3. UDPProxyJump vous permet d'effectuer un [saut proxy] SSH3 et a la même signification que l'argument de ligne de commande -proxy-jump. Disons que vous avez les lignes suivantes dans votre configuration OpenSSH située dans ~/.ssh/config :

root@kitploit:~
IgnoreUnknown URLPath
Host my-server
  HostName 192.0.2.0
  User nomdutilisateur
  IdentityFile ~/.ssh/id_rsa
  URLPath /my-secret-path

Comme le fait OpenSSH, la commande ssh3 suivante vous connectera au serveur SSH3 fonctionnant sur 192.0.2.0 sur le port UDP 443 en utilisant l'authentification par clé publique avec la clé privée située dans .ssh/id_rsa :

root@kitploit:~
ssh3 my-server/my-secret-path

Si vous ne souhaitez pas une utilisation de SSH3 basée sur la configuration, vous pouvez lire les sections ci-dessous pour voir comment utiliser les paramètres CLI de ssh3.

Authentification OpenID Connect (encore expérimentale)

Cette fonctionnalité vous permet de vous connecter en utilisant un fournisseur d'identité externe tel que celui de votre entreprise ou tout autre fournisseur implémentant la norme OpenID Connect, comme Google Identity, Github ou Microsoft Entra. Le flux d'authentification est illustré dans le GIF ci-dessous.

Connexion sécurisée sans clé privée en utilisant un compte Google.

La manière dont il se connecte à votre fournisseur d'identité est configurée dans un fichier nommé ~/.ssh3/oidc_config.json. Voici un exemple de fichier config.json pour une utilisation avec un compte Google. Ce fichier de configuration est un tableau et peut contenir plusieurs configurations de fournisseurs d'identité.

root@kitploit:~
[
    {
        "issuer_url": "https://accounts.google.com",
        "client_id": "<votre_client_id>",
        "client_secret": "<votre_client_secret>"
    }
]

Cela pourrait changer à l'avenir, mais actuellement, pour faire fonctionner cette fonctionnalité avec votre compte Google, vous devrez configurer une nouvelle application expérimentale dans votre console Google Cloud et ajouter votre email comme utilisateurs autorisés. Cela vous fournira un client_id et un client_secret que vous pourrez ensuite définir dans votre ~/.ssh3/oidc_config.json. Côté serveur, il vous suffit d'ajouter la ligne suivante dans votre ~/.ssh3/authorized_identities :

root@kitploit:~
oidc <client_id> https://accounts.google.com <email>

Nous envisageons actuellement de supprimer la nécessité de définir le client_id dans le fichier authorized_identities à l'avenir.

Saut proxy

Il arrive souvent que certains hôtes SSH ne soient accessibles que via une passerelle. SSH3 vous permet d'effectuer un saut proxy de manière similaire à ce qui est proposé par OpenSSH. Vous pouvez vous connecter de A à C en utilisant B comme passerelle/proxy. B et C doivent tous deux exécuter un serveur SSH3 valide. Cela fonctionne en établissant un transfert de port UDP sur B pour transférer les paquets QUIC de A à C. La connexion de A à C est donc entièrement de bout en bout et B ne peut ni déchiffrer ni altérer le trafic SSH3 entre A et C.

Télécharger l’outil