Volver a actualizaciones
Nuevo releaseSep 3, 2026

sshconfig-lint v0.5.0

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.

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

# 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

brew tap Noah4ever/tap
brew install sshconfig-lint

Cargo

cargo install sshconfig-lint

Arch Linux

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:

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.

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:

- 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

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:

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:

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:

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

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

Categorías