アップデート一覧に戻る
New releaseSep 3, 2026

sshconfig-lint v0.5.0

OpenSSHクライアント設定ファイル向けのルールベースのリンターで、重複ホスト、不足しているIDファイル、脆弱なアルゴリズム、ワイルドカードの順序問題、危険な設定を検出し、JSON出力とCIフレンドリーな終了コードを提供します。

共有

sshconfig-lint

Tests crates.io License: MIT

SSH設定が変更されるあらゆる場所に対応する単一のエンジン。

sshconfig-lint は、OpenSSH クライアント設定における意味的な誤りを検出します。重複ホスト、壊れた identity パス、安全でないオプション、脆弱なアルゴリズム、ワイルドカードの順序、複雑に絡み合った Include チェーンなどです。同じルールコードをローカル、Git フック、GitHub Actions、エディタで使用できます。

プライベートブラウザプレイグラウンドを試す · インタラクティブな例で学ぶ · すべてのルールを読む

ブラウザチェッカーはお使いのデバイス上で動作します。設定内容がアップロードされることはなく、テレメトリも収集されません。

クイックスタート

# ~/.ssh/config をチェック
sshconfig-lint

# 1つ以上のリポジトリ設定をチェック
sshconfig-lint .ssh/config infrastructure/ssh_config

# 警告とエラーで失敗させる
sshconfig-lint .ssh/config --strict

インストール

Homebrew

brew tap Noah4ever/tap
brew install sshconfig-lint

Cargo

cargo install sshconfig-lint

Arch Linux

yay -S sshconfig-lint-bin

リリースページ には、Linux、macOS、Windows 向けの検証済みバイナリが用意されています。便利なインストーラは、インストール前にリリースのチェックサムを検証します:

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

VERSION=v0.5.0 または INSTALL_DIR=~/.local/bin を設定して、デフォルトを上書きできます。

GitHub Actions

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

検出結果は、正確なファイルと行に注釈として表示されます。Action はタグに対応するリリースをダウンロードし、実行前に SHA256SUMS を検証します。

GitHub Code Scanning が有効なリポジトリでは、SARIF を個別にアップロードできます:

- 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: v0.5.0
    hooks:
      - id: sshconfig-lint-strict

警告でコミットをブロックしない場合は id: sshconfig-lint を使用します。設定ファイルが別の命名規則を使用している場合は、プロジェクト内で files: を上書きしてください。

エディタ

VS Code 拡張機能 を Marketplace からインストールするか、以下を実行します:

code --install-extension NoahThiering.sshconfig-lint

拡張機能は sshconfig-lint lsp を起動し、一致する検証済みバイナリを一度ダウンロードした後はオフラインで動作します。.ssh/configssh_config、chezmoi の dot_ssh/config を認識します。テレメトリは収集されません。ソースコードは editors/vscode で入手できます。

LSP をサポートする任意のエディタで、以下を起動できます:

sshconfig-lint lsp

v0.5 言語サーバーは、オープン時、変更時、保存時に全行の診断を公開します。無題のバッファではコンテンツのみのルールが実行され、保存されたファイルでは Include とファイルシステムパスが追加で解決されます。

出力形式

sshconfig-lint --format text
sshconfig-lint --format json
sshconfig-lint --format github
sshconfig-lint --format sarif

JSON の検出結果には、severitycoderulelinefilemessagehintdocumentation が含まれます。ルールコードと終了コードは安定した自動化インターフェースです。

終了コード意味
0エラーレベルの検出なし、および --strict 時の警告なし
1ブロックする検出が少なくとも1つ
2要求された設定のうち少なくとも1つを読み取れなかった

ルール

コードルール重大度
DUP_HOST重複する Host ブロックwarning
MISSING_IDENTITYIdentityFile が見つからないerror
WILDCARD_ORDERHost ワイルドカードの順序warning
WEAK_ALGO脆弱なアルゴリズムwarning
DUP_DIRECTIVE重複するディレクティブwarning
INSECURE_OPT安全でないオプションwarning
UNSAFE_CTRL_PATH安全でない ControlPathwarning
INCLUDE_CYCLEInclude サイクルerror
INCLUDE_READInclude を読み取れないerror
INCLUDE_GLOB無効な Include パターンerror
INCLUDE_NO_MATCHInclude がファイルに一致しないinfo

ルールガイドには、問題のある正確な断片、修正済みの設定、それが重要な理由、OpenSSH で結果を検証する方法が示されています。

開発

Rust 1.85 以降が必要です。

cargo test --all
cargo clippy --all-targets --all-features -- -D warnings
cargo fmt -- --check

CONTRIBUTING.md、公開ロードマップセキュリティポリシー を参照してください。

ライセンス

MIT

カテゴリ