Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
sshconfig-lint — Linter basado en reglas para archivos de configuración del cliente OpenSSH que detecta hosts duplicados, archivos de identidad faltantes, algoritmos débiles, problemas de orden de comodines y configuraciones peligrosas con salida JSON y códigos de salida aptos para CI. | Kitploit
Herramientas/GitHubGitHub/noah4ever/sshconfig-lint
Utilidades de Propósito GeneralAnálisis EstáticoAnálisis de CódigoAuditoría de ConfiguraciónSeguridad de RedesDevSecOps
GitHubnoah4ever/sshconfig-lint

sshconfig-lint

Linter basado en reglas para archivos de configuración del cliente OpenSSH que detecta hosts duplicados, archivos de identidad faltantes, algoritmos débiles, problemas de orden de comodines y configuraciones peligrosas con salida JSON y códigos de salida aptos para CI.

Ver Repositorio
16161hace 24 díasRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

sshconfig-lint

Tests crates.io License: MIT

Un motor para cada lugar donde cambia tu configuración SSH.

sshconfig-lint encuentra errores semánticos en las configuraciones del cliente OpenSSH: hosts duplicados, rutas de identidad rotas, opciones inseguras, algoritmos débiles, orden de comodines y cadenas de Include enredadas. Usa los mismos códigos de reglas localmente, en hooks de Git, GitHub Actions y editores.

Prueba el playground privado en el navegador · Aprende con ejemplos interactivos · Lee todas las reglas

El verificador del navegador se ejecuta en tu dispositivo. El contenido de la configuración no se sube y no se recopila telemetría.

Inicio rápido

root@kitploit:~
# check ~/.ssh/config
sshconfig-lint

# check one or more repository configs
sshconfig-lint .ssh/config infrastructure/ssh_config

# fail on warnings and errors
sshconfig-lint .ssh/config --strict

Instalación

Homebrew

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

Cargo

root@kitploit:~
cargo install sshconfig-lint

Arch Linux

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

La página de releases proporciona binarios verificados para Linux, macOS y Windows. El instalador de conveniencia verifica la suma de comprobación del release antes de instalar:

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

Establece VERSION=v0.5.0 o INSTALL_DIR=~/.local/bin para sobrescribir los valores predeterminados.

GitHub Actions

La Action oficial está disponible en el GitHub Marketplace.

root@kitploit:~
name: SSH config
on: [push, pull_request]

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: Noah4ever/[email protected]
        with:
          paths: |
            .ssh/config
            infrastructure/ssh_config
          strict: true

Los hallazgos aparecen como anotaciones en el archivo y la línea exactos. La Action descarga el release que coincide con su etiqueta y verifica SHA256SUMS antes de la ejecución.

Para repositorios con GitHub Code Scanning habilitado, SARIF se puede subir por separado:

root@kitploit:~
- run: sshconfig-lint .ssh/config --format sarif > sshconfig-lint.sarif
- uses: github/codeql-action/upload-sarif@v3
  with:
    sarif_file: sshconfig-lint.sarif

Pre-Commit

root@kitploit:~
repos:
  - repo: https://github.com/Noah4ever/sshconfig-lint
    rev: v1.0.0
    hooks:
      - id: sshconfig-lint-strict

Usa id: sshconfig-lint cuando las advertencias no deban bloquear un commit. Sobrescribe files: en tu proyecto cuando las configuraciones usen otra convención de nombres.

Editores

VS Code

Instala la extensión de VS Code desde el Marketplace o ejecuta:

root@kitploit:~
code --install-extension NoahThiering.sshconfig-lint

La extensión inicia sshconfig-lint lsp, descarga una vez un binario verificado que coincide y luego funciona sin conexión. Reconoce .ssh/config, ssh_config y dot_ssh/config de chezmoi. No se recopila telemetría. Su código fuente está disponible en editors/vscode.

Neovim

El ejemplo probado de editors/neovim usa el cliente LSP integrado de Neovim. Copia su pequeño módulo Lua en tu configuración e inícialo con:

root@kitploit:~
require("sshconfig_lint").setup()

Usa el mismo servidor sshconfig-lint lsp que VS Code y admite una ruta personalizada al binario.

Cualquier editor con soporte LSP puede iniciar:

root@kitploit:~
sshconfig-lint lsp

El servidor de lenguaje v0.5 publica diagnósticos de línea completa al abrir, cambiar y guardar. Los búferes sin título ejecutan reglas solo de contenido; los archivos guardados además resuelven Include y rutas del sistema de archivos. Los hallazgos de Includes anidados se adjuntan al archivo incluido y se limpian con el documento raíz.

Formatos de salida

root@kitploit:~
sshconfig-lint --format text
sshconfig-lint --format json
sshconfig-lint --format github
sshconfig-lint --format sarif

Los hallazgos JSON contienen severity, code, rule, line, file, message, hint y documentation. Los códigos de reglas y los códigos de salida son interfaces de automatización estables.

SalidaSignificado
0Ningún hallazgo de nivel de error, y ninguna advertencia con --strict
1Al menos un hallazgo bloqueante
2Al menos una configuración solicitada no se pudo leer

Reglas

CódigoReglaSeveridad
INVALID_VALUEValor de directiva no válidoerror
DUP_HOSTBloque Host duplicadowarning
MISSING_IDENTITYIdentityFile no encontradoerror
WILDCARD_ORDEROrden de comodines en Hostwarning
WEAK_ALGOAlgoritmo débilwarning
DUP_DIRECTIVEDirectiva duplicadawarning
INSECURE_OPTOpción insegurawarning
UNSAFE_CTRL_PATHControlPath insegurowarning
INCLUDE_CYCLECiclo de Includeerror
INCLUDE_DEPTHAnidamiento de Include demasiado profundoerror
INCLUDE_READNo se puede leer el Includeerror
INCLUDE_GLOBPatrón de Include no válido

Las guías de reglas muestran el fragmento roto exacto, una configuración corregida, por qué importa y cómo verificar el resultado con OpenSSH.

INVALID_VALUE verifica puertos, contadores de reintentos y solicitudes, ajustes de alive, ForwardX11Timeout, RequiredRSASize, ControlPersist, interruptores booleanos, ObscureKeystrokeTiming, valores de tiempo de OpenSSH, StreamLocalBindMask, IPQoS y conjuntos de valores documentados como AddressFamily, ControlMaster, StrictHostKeyChecking, LogLevel y PubkeyAuthentication. Los valores entre comillas y sin distinción de mayúsculas aceptados por OpenSSH siguen siendo válidos. El linter acepta sintaxis moderna sin intentar inferir la versión del cliente SSH que consumirá la configuración.

Las comprobaciones del sistema de archivos omiten rutas que contienen tokens de porcentaje o variables de entorno porque su valor final depende del contexto de la conexión. LOCAL_COMMAND_DISABLED es igualmente conservador: se suprime cuando un Include sin resolver o cualquier posible PermitLocalCommand yes podría hacer efectivo el comando. Resuelve los Includes a través de la CLI normal o un documento guardado del editor para obtener el resultado más preciso.

Desarrollo

Requiere Rust 1.85 o superior.

root@kitploit:~
cargo test --all
cargo clippy --all-targets --all-features -- -D warnings
cargo fmt -- --check

Consulta CONTRIBUTING.md, la hoja de ruta pública, el contrato de estabilidad v1 y la política de seguridad.

Licencia

MIT

Descargar herramienta
error
INCLUDE_NO_MATCHInclude no coincide con ningún archivoinfo
NEGATED_HOSTHost solo tiene patrones negadoswarning
PROXY_CONFLICTConflicto entre ProxyCommand y ProxyJumpwarning
REVOKED_HOST_KEYS_UNREADABLEEl archivo RevokedHostKeys no se puede leererror
MISSING_CERTIFICATECertificateFile no encontradoerror
LOCAL_COMMAND_DISABLEDLocalCommand no está habilitadowarning
INVALID_TOKENToken de porcentaje no válidoerror
INVALID_SYNTAXSintaxis no válidaerror
UNKNOWN_DIRECTIVEDirectiva desconocidaerror
DEPRECATED_OPTIONOpción obsoletawarning
INVALID_MATCHCondición Match no válidaerror
CONTROL_PERSIST_UNUSEDControlPersist sin ControlMasterwarning
UPDATE_HOSTKEYS_ASK_PERSISTUpdateHostKeys ask con ControlPersistwarning