
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.
Um único motor para todos os lugares onde sua configuração SSH muda.
O sshconfig-lint encontra erros semânticos em configurações de cliente OpenSSH: hosts duplicados, caminhos de identidade quebrados, opções inseguras, algoritmos fracos, ordenação de curingas e cadeias de Include emaranhadas. Use os mesmos códigos de regra localmente, em hooks do Git, GitHub Actions e editores.
Experimente o playground privado no navegador · Aprenda com exemplos interativos · Leia todas as regras
O verificador no navegador é executado no seu dispositivo. O conteúdo da configuração não é enviado e nenhuma telemetria é coletada.
# 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
brew tap Noah4ever/tap
brew install sshconfig-lint
cargo install sshconfig-lint
yay -S sshconfig-lint-bin
A página de releases fornece binários verificados para Linux, macOS e Windows. O instalador de conveniência verifica o checksum da release antes de instalar:
curl -fsSL https://raw.githubusercontent.com/Noah4ever/sshconfig-lint/main/install.sh | bash
Defina VERSION=v0.5.0 ou INSTALL_DIR=~/.local/bin para substituir os padrões.
A Action oficial está disponível no 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
Os achados aparecem como anotações no arquivo e na linha exatos. A Action baixa a release correspondente à sua tag e verifica o SHA256SUMS antes da execução.
Para repositórios com o GitHub Code Scanning habilitado, o SARIF pode ser enviado separadamente:
- run: sshconfig-lint .ssh/config --format sarif > sshconfig-lint.sarif
- uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: sshconfig-lint.sarif
repos:
- repo: https://github.com/Noah4ever/sshconfig-lint
rev: v1.0.0
hooks:
- id: sshconfig-lint-strict
Use id: sshconfig-lint quando os avisos não devem bloquear um commit. Substitua files: no seu projeto quando as configurações usarem outra convenção de nomenclatura.
Instale a extensão do VS Code pelo Marketplace ou execute:
code --install-extension NoahThiering.sshconfig-lint
A extensão inicia sshconfig-lint lsp, baixa uma vez um binário verificado correspondente e depois funciona offline. Ela reconhece .ssh/config, ssh_config e dot_ssh/config do chezmoi. Nenhuma telemetria é coletada. Seu código-fonte está disponível em editors/vscode.
O exemplo testado em editors/neovim usa o cliente
LSP integrado do Neovim. Copie seu pequeno módulo Lua para sua configuração e inicie-o com:
require("sshconfig_lint").setup()
Ele usa o mesmo servidor sshconfig-lint lsp que o VS Code e suporta um caminho
personalizado para o binário.
Qualquer editor com suporte a LSP pode iniciar:
sshconfig-lint lsp
O servidor de linguagem v0.5 publica diagnósticos de linha completa ao abrir, alterar e salvar. Buffers sem título executam apenas regras de conteúdo; arquivos salvos também resolvem Include e caminhos do sistema de arquivos. Achados de Includes aninhados são anexados ao arquivo incluído e limpos com o documento raiz.
sshconfig-lint --format text
sshconfig-lint --format json
sshconfig-lint --format github
sshconfig-lint --format sarif
Os achados em JSON contêm severity, code, rule, line, file, message, hint e documentation. Os códigos de regra e os códigos de saída são interfaces de automação estáveis.
| Saída | Significado |
|---|---|
0 | Nenhum achado de nível de erro, e nenhum aviso com --strict |
1 | Pelo menos um achado bloqueante |
2 | Pelo menos uma configuração solicitada não pôde ser lida |