Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
ssh3 — Protocolo de shell rápido e seguro construído sobre HTTP/3, QUIC e TLS 1.3. Suporta OAuth2, OpenID Connect e autenticação SSH clássica com encaminhamento de porta UDP e capacidades de servidor oculto. | Kitploit
Ferramentas/GitHubGitHub/francoismichel/ssh3
Ferramentas de Criptografia/DescriptografiaSegurança de RedeUtilitários e FrameworksAutenticação
GitHubfrancoismichel/ssh3

ssh3

Protocolo de shell rápido e seguro construído sobre HTTP/3, QUIC e TLS 1.3. Suporta OAuth2, OpenID Connect e autenticação SSH clássica com encaminhamento de porta UDP e capacidades de servidor oculto.

Ver Repositório
5.0k11815há 2 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Site

[!NOTE] SSH3 provavelmente vai mudar de nome. Ainda é o Protocolo de Conexão SSH (RFC4254) rodando sobre HTTP/3 Extended connect, mas as mudanças necessárias são pesadas e muito distantes da filosofia das implementações populares de SSH para serem consideradas para integração. O rascunho de especificação já foi renomeado ("Terminais Remotos sobre HTTP/3"), mas precisamos de algum tempo para criar um nome permanente adequado.

SSH3: shell seguro mais rápido e rico usando HTTP/3

SSH3 é uma revisão completa do protocolo SSH, mapeando sua semântica sobre os mecanismos HTTP. Ele vem do nosso trabalho de pesquisa e nós (pesquisadores) o propusemos recentemente como um Internet-Draft (draft-michel-remote-terminal-http3-00).

Em poucas palavras, o SSH3 usa QUIC+TLS1.3 para estabelecimento de canal seguro e os mecanismos de Autorização HTTP para autenticação de usuário. Entre outros, o SSH3 permite as seguintes melhorias:

  • Estabelecimento de sessão significativamente mais rápido
  • Novos métodos de autenticação HTTP como OAuth 2.0 e OpenID Connect além da autenticação SSH clássica
  • Robustez a ataques de varredura de portas: seu servidor SSH3 pode ser tornado invisível para outros usuários da Internet
  • Encaminhamento de porta UDP além do encaminhamento de porta TCP clássico
  • Todos os recursos permitidos pelo moderno protocolo QUIC: incluindo migração de conexão (em breve) e conexões multi-caminho

[!TIP] Quer começar rapidamente? Veja como instalar o SSH3. Você aprenderá a configurar um servidor SSH3 e usar o cliente SSH3.

⚡ SSH3 é mais rápido

Mais rápido para estabelecimento de sessão, não para vazão! O SSH3 oferece um estabelecimento de sessão significativamente mais rápido que o SSHv2. Estabelecer uma nova sessão com o SSHv2 pode levar de 5 a 7 viagens de ida e volta na rede, o que pode ser facilmente notado pelo usuário. O SSH3 precisa apenas de 3 viagens de ida e volta. A latência de digitação em uma sessão em execução permanece inalterada.

SSH3 (topo) VS SSHv2 (base) estabelecimento de sessão com um ping de 100ms para o servidor.

🔒 Segurança do SSH3

Enquanto o SSHv2 define seus próprios protocolos para autenticação de usuário e estabelecimento de canal seguro, o SSH3 depende dos mecanismos robustos e testados pelo tempo do TLS 1.3, QUIC e HTTP. Esses protocolos já são amplamente usados para proteger aplicações críticas de segurança na Internet, como comércio eletrônico e Internet banking.

O SSH3 já implementa os métodos comuns de autenticação baseada em senha e chave pública (RSA e EdDSA/ed25519). Ele também suporta novos métodos de autenticação como OAuth 2.0 e permite fazer login em seus servidores usando suas contas Google/Microsoft/Github.

🧪 SSH3 ainda é experimental

Embora o SSH3 seja promissor para um estabelecimento de sessão mais rápido, ainda está em um estágio inicial de prova de conceito. Como qualquer novo protocolo complexo, uma revisão criptográfica especializada em um período prolongado é necessária antes que conclusões razoáveis de segurança possam ser feitas.

Estamos desenvolvendo o SSH3 como um projeto de código aberto para facilitar o feedback e a análise da comunidade. No entanto, ainda não podemos endossar sua adequação para sistemas de produção sem uma revisão por pares adicional. Colabore conosco se você tiver expertise relevante!

🥷 Não implante o servidor SSH3 em seus servidores de produção por enquanto

Dado o estado atual do protótipo, aconselhamos testar o SSH3 em ambientes isolados ou redes privadas. Esteja ciente que disponibilizar servidores experimentais diretamente acessíveis na Internet pode introduzir riscos antes de uma verificação de segurança aprofundada.

Embora ocultar servidores atrás de caminhos secretos tenha benefícios potenciais, isso não elimina a necessidade de uma análise rigorosa de vulnerabilidades antes de entrar em produção. Estamos animados com as possibilidades futuras do SSH3, mas incentivamos uma análise adicional primeiro.

🥷 Seu servidor público SSH3 pode ser ocultado

Usando SSH3, você pode evitar o estresse usual de varredura e ataques de dicionário contra seu servidor SSH. Similarmente aos seus documentos secretos do Google Drive, seu servidor SSH3 pode ser ocultado atrás de um link secreto e responder apenas a tentativas de autenticação que fizerem uma requisição HTTP para este link específico, como o seguinte:

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

Substituindo <my-long-secret> por, digamos, o valor aleatório M3MzkxYWMxMjYxMjc5YzJkODZiMTAyMjU, seu servidor SSH3 responderá apenas a tentativas de conexão SSH3 feitas à URL https://192.0.2.0:443/M3MzkxYWMxMjYxMjc5YzJkODZiMTAyMjU e responderá 404 Not Found para outras requisições. Atacantes e rastreadores na Internet não podem, portanto, detectar a presença do seu servidor SSH3. Eles verão apenas um simples servidor web respondendo códigos de status 404 para toda requisição.

NOTA BEM: colocar seu servidor SSH3 atrás de uma URL secreta pode reduzir o impacto de ataques de varredura, mas nunca substituirá os mecanismos de autenticação clássicos. O link secreto deve ser usado apenas para evitar que seu host seja descoberto. Saber a URL secreta não deve conceder acesso ao seu servidor. Use os mecanismos de autenticação clássicos descritos acima para proteger seu servidor.

💐 SSH3 já é rico em recursos

SSH3 fornece novos recursos que não poderiam ser fornecidos pelo protocolo SSHv2.

Recursos totalmente novos

  • Encaminhamento de porta UDP: agora você pode acessar seus servidores QUIC, DNS, RTP ou qualquer servidor baseado em UDP que seja acessível apenas a partir do seu host SSH3. Pacotes UDP são encaminhados usando datagramas QUIC.
  • Certificados X.509: agora você pode usar seus certificados HTTPS clássicos para autenticar seu servidor SSH3. Este mecanismo é mais seguro que o mecanismo clássico de chave de host SSHv2. Certificados podem ser obtidos facilmente usando LetsEncrypt, por exemplo.
  • Ocultar seu servidor atrás de um link secreto.
  • Autenticação segura de usuário sem chave usando OpenID Connect. Você pode conectar-se ao seu servidor SSH3 usando o SSO da sua empresa ou sua conta Google/Github, e não precisa mais copiar as chaves públicas dos seus usuários.

Recursos famosos do OpenSSH implementados

Esta implementação SSH3 já fornece muitos dos recursos populares do OpenSSH, então se você está acostumado com o OpenSSH, o processo de adoção do SSH3 será tranquilo. Aqui está uma lista de alguns recursos do OpenSSH que o SSH3 também implementa:

  • Analisa ~/.ssh/authorized_keys no servidor
  • Autenticação de servidor baseada em certificado
  • Mecanismo known_hosts quando certificados X.509 não são usados.
  • Uso automático do ssh-agent para autenticação por chave pública
  • Encaminhamento do agente SSH para usar suas chaves locais no servidor remoto
  • Encaminhamento direto de porta TCP (encaminhamento reverso de porta será implementado no futuro)
  • Salto de proxy (veja o parâmetro -proxy-jump). Se A é um cliente SSH3 e B e C são ambos servidores SSH3, você pode conectar de A a C usando B como gateway/proxy. O proxy usa encaminhamento UDP para encaminhar os pacotes QUIC de A para C, então B não pode descriptografar o tráfego SSH3 A<->C.
  • Analisa ~/.ssh/config no cliente e lida com as opções de configuração Hostname, User, Port e IdentityFile (as outras opções são atualmente ignoradas). Também analisa uma nova opção UDPProxyJump que se comporta de forma similar ao ProxyJump do OpenSSH.

🙏 Apoio da comunidade

Ajude-nos a progredir o SSH3 de forma responsável! Acolhemos pesquisadores de segurança capacitados para revisar nossa base de código e fornecer feedback. Por favor, também nos conecte com órgãos normativos relevantes para potencialmente avançar o SSH3 através dos processos formais do IETF/IRTF ao longo do tempo.

Com assistência colaborativa, esperamos melhorar iterativamente o SSH3 em direção a uma prontidão segura para produção. Mas não podemos fazer afirmações de segurança definitivas de forma crível sem evidências de revisão criptográfica extensiva por especialistas e adoção por autoridades de segurança respeitadas. Vamos trabalhar juntos para realizar as possibilidades do SSH3!

Instalando o SSH3

Você pode baixar os binários da última versão, instalá-lo usando go install ou gerar esses binários você mesmo compilando o código a partir da fonte.

[!TIP] O SSH3 ainda é experimental e é fruto de um trabalho de pesquisa. Se você tem receio de implantar publicamente um novo servidor SSH3, você pode usar o recurso de caminho secreto do SSH3 para ocultá-lo atrás de uma URL secreta.

Instalando ssh3 e ssh3-server usando Go install

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

Compilando o SSH3 a partir da fonte

Você precisa de uma versão recente do Golang para fazer isso. Baixar o código fonte e compilar os binários pode ser feito com os seguintes passos:

root@kitploit:~
git clone https://github.com/francoismichel/ssh3    # clone o repositório
cd ssh3
go build -o ssh3 cmd/ssh3/main.go                        # compilar o cliente
CGO_ENABLED=1 go build -o ssh3-server cmd/ssh3-server/main.go   # compilar o servidor, requer ter o gcc instalado

Se você tem privilégios de root/sudo e deseja tornar o ssh3 acessível a todos os usuários, você pode copiar diretamente os binários para /usr/bin:

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

Caso contrário, você pode simplesmente adicionar os executáveis à sua variável de ambiente PATH adicionando a seguinte linha no final do seu .bashrc ou equivalente:

root@kitploit:~
export PATH=$PATH:/caminho/para/o/diretorio/ssh3

Implantando um servidor SSH3

Antes de conectar ao seu host, você precisa implantar um servidor SSH3 nele. Atualmente não há um daemon SSH3, então por enquanto, você precisará executar o executável ssh3-server em segundo plano usando screen ou um utilitário similar.

[!NOTE] Como o SSH3 roda sobre HTTP/3, um servidor precisa de um certificado X.509 e sua chave privada correspondente. Certificados públicos podem ser gerados automaticamente para seu nome de domínio público através do Let's Encrypt usando o argumento de linha de comando -generate-public-cert no servidor. Se você não quiser gerar um certificado assinado por uma autoridade certificadora real ou se não tiver um nome de domínio público, você pode gerar um autoassinado usando o argumento -generate-selfsigned-cert. Certificados autoassinados oferecem garantias de segurança similares ao mecanismo de chave de host do SSHv2, com o mesmo problema de segurança: você pode estar vulnerável a ataques de intermediário durante sua primeira conexão ao servidor. Usar certificados reais assinados por autoridades certificadoras públicas como Let's Encrypt evita esse problema.

Aqui está o uso do executável ssh3-server:

root@kitploit:~
Uso do ./ssh3-server:
  -bind string
        o par endereço:porta para escutar, ex. 0.0.0.0:443 (padrão "[::]:443")
  -cert string
        o nome do arquivo do certificado do servidor (ou fullchain) (padrão "./cert.pem")
  -key string
        o nome do arquivo da chave privada do certificado (padrão "./priv.key")
  -enable-password-login
        se definido, habilita autenticação por senha (desabilitado por padrão)
  -generate-public-cert value
        Produzir e usar automaticamente um certificado público válido usando o Let's Encrypt para o nome de domínio fornecido. A flag pode ser usada várias vezes para gerar vários certificados. Se os certificados já foram gerados anteriormente usando esta flag, eles serão simplesmente reutilizados sem serem regenerados. Os certificados públicos são renovados automaticamente enquanto o servidor estiver em execução. Certificados públicos IP gerados automaticamente ainda não estão disponíveis.
  -generate-selfsigned-cert
        se definido, gera um certificado e chave autoassinados que serão armazenados nos caminhos indicados pelos argumentos -cert e -key (eles não devem existir previamente)
  -url-path string
        o caminho da URL secreta no qual o servidor ssh3 escuta (padrão "/ssh3-term")
  -v    modo verboso, se definido
  -version
        se definido, exibe a versão do software na saída padrão e sai

O comando a seguir inicia um servidor SSH3 público na porta 443 com um certificado público válido do Let's Encrypt para o domínio my-domain.example.org e responde a requisições de nova sessão consultando o caminho da URL /ssh3:

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

Se você não tem um nome de domínio público (apenas um endereço IP), você pode usar um certificado existente para seu endereço IP usando os argumentos -cert e -key ou gerar um certificado autoassinado usando o argumento -generate-selfsigned-cert.

Se você tem certificados e chaves existentes, você pode executar o servidor da seguinte forma para usá-los:

root@kitploit:~
ssh3-server -cert /caminho/para/certificado/ou/fullchain -key /caminho/para/chave/privada/do/certificado -url-path /ssh3

[!NOTE] Da mesma forma que o OpenSSH, o servidor deve ser executado com privilégios de root para fazer login como outros usuários.

Chaves autorizadas e identidades autorizadas

Por padrão, o servidor SSH3 procurará identidades nos arquivos ~/.ssh/authorized_keys e ~/.ssh3/authorized_identities para cada usuário. ~/.ssh3/authorized_identities permite novas identidades como OpenID Connect (oidc) discutido abaixo. Tipos de chave populares como rsa, ed25519 e chaves no formato OpenSSH podem ser usados.

Usando o cliente SSH3

Depois de ter um servidor SSH3 em execução, você pode conectar-se a ele usando o cliente SSH3 de forma similar ao que você fazia com sua ferramenta SSHv2 clássica.

Aqui está o uso do executável ssh3:

root@kitploit:~
Uso do ssh3:
  -pubkey-for-agent string
        se definido, usa uma chave do agente cuja chave pública corresponde à do caminho especificado
  -privkey string
        arquivo de chave privada
  -use-password
        se definido, faz autenticação clássica por senha
  -forward-agent
        se definido, encaminha o agente ssh para ser usado com conexões sshv2 no host remoto
  -forward-tcp string
        se definido, aceita um localporta/remoteip@remoteporta encaminhando localhost@localporta para remoteip@remoteporta
  -forward-udp string
        se definido, aceita um localporta/remoteip@remoteporta encaminhando localhost@localporta para remoteip@remoteporta
  -proxy-jump string
        se definido, realiza um salto de proxy usando o host remoto especificado como proxy
  -insecure
        se definido, ignora a verificação do certificado do servidor
  -keylog string
        Escreve as chaves TLS QUIC e o segredo mestre no arquivo keylog especificado: apenas para fins de depuração
  -use-oidc string
        se definido, força o uso de OpenID Connect com a URL do emissor especificada como parâmetro
  -oidc-config string
        Arquivo de configuração JSON do OpenID Connect contendo os campos "client_id" e "client_secret" necessários para a maioria dos provedores de identidade
  -do-pkce
        se definido, realiza desafio-resposta PKCE com oidc
  -v    se definido, habilita modo verboso

Autenticação por chave privada

Você pode conectar-se ao seu servidor SSH3 em my-server.example.org ouvindo em /my-secret-path usando a chave privada localizada em ~/.ssh/id_rsa com o seguinte comando:

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

Autenticação por chave privada baseada em agente

O cliente SSH3 funciona com o agente OpenSSH e usa a variável de ambiente clássica SSH_AUTH_SOCK para se comunicar com este agente. Similarmente ao OpenSSH, o SSH3 listará as chaves fornecidas pelo agente SSH e conectará usando a primeira chave listada pelo agente por padrão. Se você quiser especificar uma chave específica para usar com o agente, você pode especificar a chave privada diretamente com o argumento -privkey como acima, ou especificar a chave pública correspondente usando o argumento -pubkey-for-agent. Isso permite autenticar em situações onde apenas o agente tem acesso direto à chave privada, mas você tem apenas acesso à chave pública.

Autenticação baseada em senha

Embora desencorajado, você pode conectar-se ao seu servidor usando senhas (se explicitamente habilitado no ssh3-server) com o seguinte comando:

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

Estabelecimento de sessão baseado em configuração

ssh3 analisa sua configuração do OpenSSH. Atualmente, ele lida apenas com as opções Hostname; User, Port e IdentityFile do OpenSSH. Também adiciona nova opção usada apenas pelo SSH3, como URLPath ou UDPProxyJump. URLPath permite que você omita o caminho da URL secreta em seu comando SSH3. UDPProxyJump permite que você realize Salto de Proxy SSH3 e tem o mesmo significado que o argumento de linha de comando -proxy-jump. Digamos que você tenha as seguintes linhas em sua configuração OpenSSH localizada em ~/.ssh/config :

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

Similarmente ao que o OpenSSH faz, o seguinte comando ssh3 conectará você ao servidor SSH3 rodando em 192.0.2.0 na porta UDP 443 usando autenticação por chave pública com a chave privada localizada em .ssh/id_rsa :

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

Se você não quiser uma utilização baseada em configuração do SSH3, você pode ler as seções abaixo para ver como usar os parâmetros de CLI do ssh3.

Autenticação OpenID Connect (ainda experimental)

Este recurso permite que você se conecte usando um provedor de identidade externo, como o da sua empresa ou qualquer outro provedor que implemente o padrão OpenID Connect, como Google Identity, Github ou Microsoft Entra. O fluxo de autenticação é ilustrado no GIF abaixo.

Conexão segura sem chave privada usando uma conta do Google.

A forma como ele se conecta ao seu provedor de identidade é configurada em um arquivo chamado ~/.ssh3/oidc_config.json. Abaixo está um exemplo de arquivo config.json para uso com uma conta do Google. Este arquivo de configuração é um array e pode conter várias configurações de provedores de identidade.

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

Isso pode mudar no futuro, mas atualmente, para fazer este recurso funcionar com sua conta do Google, você precisará configurar um novo aplicativo experimental no console do Google Cloud e adicionar seu e-mail como usuários autorizados. Isso fornecerá um client_id e um client_secret que você pode então definir em seu ~/.ssh3/oidc_config.json. No lado do servidor, você só precisa adicionar a seguinte linha em seu ~/.ssh3/authorized_identities:

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

Atualmente consideramos remover a necessidade de definir o client_id no arquivo authorized_identities no futuro.

Salto de proxy

Frequentemente, alguns hosts SSH podem ser acessados apenas através de um gateway. O SSH3 permite que você realize um Salto de Proxy similarmente ao que é proposto pelo OpenSSH. Você pode conectar de A a C usando B como gateway/proxy. B e C devem estar ambos executando um servidor SSH3 válido. Isso funciona estabelecendo encaminhamento de porta UDP em B para encaminhar pacotes QUIC de A para C. A conexão de A para C é, portanto, totalmente ponta a ponta e B não pode descriptografar ou alterar o tráfego SSH3 entre A e C.

Baixar ferramenta