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
sshconfig-lint — Linter baseado em regras para arquivos de configuração do cliente OpenSSH que detecta hosts duplicados, arquivos de identidade ausentes, algoritmos fracos, problemas de ordenação de curingas e configurações perigosas, com saída JSON e códigos de saída compatíveis com CI. | Kitploit
Ferramentas/GitHubGitHub/noah4ever/sshconfig-lint
Utilitários de Propósito GeralAnálise EstáticaAnálise de CódigoAuditoria de ConfiguraçãoSegurança de RedeDevSecOps
GitHubnoah4ever/sshconfig-lint

sshconfig-lint

Linter baseado em regras para arquivos de configuração do cliente OpenSSH que detecta hosts duplicados, arquivos de identidade ausentes, algoritmos fracos, problemas de ordenação de curingas e configurações perigosas, com saída JSON e códigos de saída compatíveis com CI.

Ver Repositório
16há 5 mesesAinda não revisado

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

sshconfig-lint

Verifique erros comuns no seu ~/.ssh/config.

Verifica blocos de host duplicados, arquivos de identidade ausentes, problemas de ordenação de curingas, algoritmos fracos, diretivas duplicadas e muito mais. Suporta diretivas Include com detecção de ciclos.

https://github.com/user-attachments/assets/4d995679-baed-4f20-9ba8-8f3ec94c64fd

Instalar

Instalação rápida (Linux / macOS)

root@kitploit:~
curl -fsSL https://raw.githubusercontent.com/Noah4ever/sshconfig-lint/main/install.sh | bash

Defina VERSION=v0.1.0 ou INSTALL_DIR=~/.local/bin para sobrescrever os padrões.

macOS (Homebrew)

root@kitploit:~
brew tap Noah4ever/tap
brew install sshconfig-lint

opcional: untap Noah4ever/tap para remover o tap e manter a lista de taps limpa

Cargo

root@kitploit:~
cargo install sshconfig-lint

AUR

sshconfig-lint-bin - binários pré-compilados

root@kitploit:~
yay -S sshconfig-lint-bin
root@kitploit:~
paru -S sshconfig-lint-bin

Binários pré-compilados

Baixe um binário na página de releases.

Uso

root@kitploit:~
# verifica o ~/.ssh/config padrão
sshconfig-lint

# verifica um arquivo específico
sshconfig-lint --config /caminho/para/config

# saída em json
sshconfig-lint --format json

# trata avisos como erros (útil em CI)
sshconfig-lint --strict

# ignora a resolução de Includes
sshconfig-lint --no-includes

Exemplo de saída

root@kitploit:~
linha 4: [aviso] WILDCARD_ORDER (wildcard-host-order) O host 'github.com' aparece depois de 'Host *' (linha 1); nunca será correspondido porque Host * já correspondeu (dica: mova Host * para o final do arquivo)
linha 7: [aviso] DUP_HOST (duplicate-host) bloco Host 'github.com' duplicado (primeira vez na linha 4) (dica: remova um dos blocos Host duplicados)
linha 3: [erro] MISSING_IDENTITY (identity-file-exists) IdentityFile não encontrado: ~/.ssh/id_missing (dica: verifique o caminho ou remova a diretiva)

A saída é ordenada por arquivo e número de linha, sendo determinística entre execuções (estável para diffs e snapshots em CI).

Erros são vermelhos, avisos são amarelos, informações são ciano. As cores são desabilitadas automaticamente quando stdout não é um terminal ou quando NO_COLOR está definido.

Códigos de saída

CódigoSignificado
0Limpo, nenhum erro encontrado
1Pelo menos um achado do nível erro (ou aviso com --strict)
2Arquivo de configuração não encontrado

Regras

Cada achado possui um código estável que você pode usar para grep ou correspondência em scripts.

Os achados incluem uma dica quando possível, como "mova Host * para o final do arquivo".

O que ele verifica

  • Múltiplos padrões de host (Host github.com gitlab.com)
  • Múltiplos padrões de include (Include conf.d/*.conf extra.conf)
  • Comentários inline (IdentityFile ~/.ssh/id # minha chave)
  • Valores entre aspas (ProxyCommand "ssh -W %h:%p bastion")
  • Resolução de Include com detecção de ciclos

Desenvolvimento

root@kitploit:~
cargo test          # executa todos os testes
cargo test --lib    # apenas testes unitários
cargo clippy        # lint
cargo fmt --check   # formatação

Estrutura do projeto

root@kitploit:~
src/
  main.rs        CLI
  lib.rs         API pública (lint_file, lint_str)
  model.rs       Tipos da AST
  lexer.rs       Tokenizador
  parser.rs      Constrói a AST da configuração a partir dos tokens
  resolve.rs     Expansão de Include + detecção de ciclos
  report.rs      Formatadores de texto e JSON
  rules/
    mod.rs       Trait Rule e executor
    basic.rs     Regras embutidas
tests/
  fixtures/      Arquivos de configuração de exemplo
  cli.rs         Testes de integração da CLI
  integration.rs Testes baseados em fixtures

Adicionando uma regra

  1. Implemente o trait Rule em src/rules/basic.rs
  2. Registre-a em run_all() em src/rules/mod.rs
  3. Escreva os testes primeiro, depois faça-os passar

Veja CONTRIBUTING.md para mais detalhes.

Licença

MIT

Baixar ferramenta
CódigoRegraSeveridadeDescrição
DUP_HOSTduplicate-hostavisoDois blocos Host com o mesmo padrão
MISSING_IDENTITYidentity-file-existserroCaminho do IdentityFile não existe
WILDCARD_ORDERwildcard-host-orderavisoHost * aparece antes de padrões específicos
WEAK_ALGOdeprecated-weak-algorithmsavisoAlgoritmo fraco ou obsoleto (3des-cbc, arcfour, hmac-md5, ssh-dss, etc.)
DUP_DIRECTIVEduplicate-directivesavisoMesma diretiva repetida em um escopo (apenas o primeiro valor tem efeito)
INSECURE_OPTinsecure-optionavisoConfiguração perigosa como StrictHostKeyChecking no ou ForwardAgent yes em Host *
UNSAFE_CTRL_PATHunsafe-control-pathavisoControlPath sem %h, %p, %r (ou %C) — conexões podem compartilhar um socket
INCLUDE_CYCLEinclude-cycleerroCadeia Include circular
INCLUDE_READinclude-readerroArquivo incluído não pode ser lido
INCLUDE_GLOBinclude-globerroPadrão de glob Include inválido
INCLUDE_NO_MATCHinclude-no-matchinformaçãoPadrão Include não correspondeu a nenhum arquivo