업데이트로 돌아가기
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, 편집기에서 사용할 수 있습니다.

비공개 브라우저 플레이그라운드 사용해 보기 · 대화형 예제로 배우기 · 모든 규칙 읽기

브라우저 검사기는 사용자 기기에서 실행됩니다. 설정 내용은 업로드되지 않으며 원격 측정(telemetry)도 수집되지 않습니다.

빠른 시작

# ~/.ssh/config 확인
sshconfig-lint

# 하나 이상의 저장소 설정 확인
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/config, ssh_config, chezmoi의 dot_ssh/config를 인식합니다. 원격 측정(telemetry)은 수집되지 않습니다. 소스 코드는 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 발견 사항에는 severity, code, rule, line, file, message, hint, documentation이 포함됩니다. 규칙 코드와 종료 코드는 안정적인 자동화 인터페이스입니다.

종료 코드의미
0오류 수준 발견 사항 없음, --strict 사용 시 경고 없음
1차단 발견 사항이 하나 이상 있음
2요청된 설정 중 하나 이상을 읽을 수 없음

규칙

코드규칙심각도
DUP_HOST중복 Host 블록경고
MISSING_IDENTITYIdentityFile을 찾을 수 없음오류
WILDCARD_ORDERHost 와일드카드 순서경고
WEAK_ALGO취약한 알고리즘경고
DUP_DIRECTIVE중복 지시문경고
INSECURE_OPT안전하지 않은 옵션경고
UNSAFE_CTRL_PATH안전하지 않은 ControlPath경고
INCLUDE_CYCLEInclude 순환오류
INCLUDE_READInclude를 읽을 수 없음오류
INCLUDE_GLOB잘못된 Include 패턴오류
INCLUDE_NO_MATCHInclude가 일치하는 파일 없음정보

규칙 가이드에는 정확히 잘못된 부분, 수정된 설정, 중요한 이유, OpenSSH로 결과를 검증하는 방법이 나와 있습니다.

개발

Rust 1.85 이상이 필요합니다.

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

CONTRIBUTING.md, 공개 로드맵, 보안 정책을 참조하세요.

라이선스

MIT

카테고리