Skip to content
KitploitKITPLOIT
도구블로그
Log in
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
sshconfig-lint — OpenSSH 클라이언트 구성 파일을 위한 규칙 기반 린터로, 중복 호스트, 누락된 ID 파일, 취약한 알고리즘, 와일드카드 정렬 문제, 위험한 설정을 감지하며 JSON 출력 및 CI 친화적인 종료 코드를 제공합니다. | Kitploit
도구/GitHubGitHub/noah4ever/sshconfig-lint
General Purpose UtilitiesStatic AnalysisCode AnalysisConfiguration AuditingNetwork SecurityDevSecOps
GitHubnoah4ever/sshconfig-lint

sshconfig-lint

OpenSSH 클라이언트 구성 파일을 위한 규칙 기반 린터로, 중복 호스트, 누락된 ID 파일, 취약한 알고리즘, 와일드카드 정렬 문제, 위험한 설정을 감지하며 JSON 출력 및 CI 친화적인 종료 코드를 제공합니다.

저장소 보기
1616326일 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

sshconfig-lint

Tests crates.io License: MIT

SSH 설정이 바뀌는 모든 곳을 위한 단일 엔진.

sshconfig-lint는 OpenSSH 클라이언트 설정에서 의미상의 실수를 찾아냅니다: 중복 호스트, 깨진 identity 경로, 안전하지 않은 옵션, 취약한 알고리즘, 와일드카드 순서, 그리고 얽힌 Include 체인 등입니다. 동일한 규칙 코드를 로컬, Git 훅, GitHub Actions, 그리고 에디터에서 사용할 수 있습니다.

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

브라우저 검사기는 사용자의 기기에서 실행됩니다. 설정 내용은 업로드되지 않으며 어떠한 텔레메트리도 수집되지 않습니다.

빠른 시작

# 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

설치

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

공식 Action은 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

발견 사항은 정확한 파일과 줄에 주석으로 표시됩니다. 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: v1.0.0
    hooks:
      - id: sshconfig-lint-strict

경고가 커밋을 막지 않아야 할 때는 id: sshconfig-lint를 사용하세요. 설정 파일이 다른 명명 규칙을 사용하는 경우 프로젝트에서 files:를 재정의하세요.

에디터

VS Code

Marketplace에서 VS Code 확장을 설치하거나 다음을 실행하세요:

code --install-extension NoahThiering.sshconfig-lint

이 확장은 sshconfig-lint lsp를 시작하고, 일치하는 검증된 바이너리를 한 번 다운로드한 후 오프라인으로 작동합니다. .ssh/config, ssh_config, 그리고 chezmoi의 dot_ssh/config를 인식합니다. 어떠한 텔레메트리도 수집되지 않습니다. 소스는 editors/vscode에서 확인할 수 있습니다.

Neovim

테스트된 editors/neovim 예제는 Neovim에 내장된 LSP 클라이언트를 사용합니다. 작은 Lua 모듈을 설정에 복사하고 다음과 같이 시작하세요:

require("sshconfig_lint").setup()

VS Code와 동일한 sshconfig-lint lsp 서버를 사용하며 사용자 지정 바이너리 경로를 지원합니다.

LSP를 지원하는 모든 에디터는 다음을 실행할 수 있습니다:

sshconfig-lint lsp

v0.5 언어 서버는 열기, 변경, 저장 시 전체 줄 진단을 게시합니다. 제목 없는 버퍼는 내용 전용 규칙을 실행하며, 저장된 파일은 추가로 Include와 파일 시스템 경로를 해석합니다. 중첩된 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요청된 설정 중 최소 하나를 읽을 수 없음

규칙

코드규칙심각도
INVALID_VALUE잘못된 지시문 값error
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_DEPTHInclude 중첩이 너무 깊음error
INCLUDE_READInclude를 읽을 수 없음error
INCLUDE_GLOB잘못된 Include 패턴error
INCLUDE_NO_MATCHInclude가 일치하는 파일 없음info
NEGATED_HOSTHost에 부정 패턴만 있음warning
PROXY_CONFLICTProxyCommand와 ProxyJump 충돌warning
REVOKED_HOST_KEYS_UNREADABLERevokedHostKeys 파일을 읽을 수 없음error
MISSING_CERTIFICATECertificateFile을 찾을 수 없음error
LOCAL_COMMAND_DISABLEDLocalCommand가 활성화되지 않음warning
INVALID_TOKEN잘못된 퍼센트 토큰error
INVALID_SYNTAX잘못된 구문error
UNKNOWN_DIRECTIVE알 수 없는 지시문error
DEPRECATED_OPTION더 이상 사용되지 않는 옵션warning
INVALID_MATCH잘못된 Match 조건error
CONTROL_PERSIST_UNUSEDControlMaster 없는 ControlPersistwarning
UPDATE_HOSTKEYS_ASK_PERSISTControlPersist와 함께 사용된 UpdateHostKeys askwarning

규칙 가이드는 정확히 깨진 부분, 수정된 설정, 왜 중요한지, 그리고 OpenSSH로 결과를 검증하는 방법을 보여줍니다.

INVALID_VALUE는 포트, 재시도 및 프롬프트 카운터, alive 설정, ForwardX11Timeout, RequiredRSASize, ControlPersist, 불리언 스위치, ObscureKeystrokeTiming, OpenSSH 시간 값, StreamLocalBindMask, IPQoS, 그리고 AddressFamily, ControlMaster, StrictHostKeyChecking, LogLevel, PubkeyAuthentication과 같은 문서화된 값 집합을 검사합니다. OpenSSH가 허용하는 따옴표로 묶인 값과 대소문자를 구분하지 않는 값은 유효하게 유지됩니다. 린터는 설정을 소비할 SSH 클라이언트의 버전을 추론하려 하지 않고 최신 구문을 허용합니다.

파일 시스템 검사는 퍼센트 토큰이나 환경 변수를 포함하는 경로를 건너뜁니다. 그 최종 값이 연결 컨텍스트에 따라 달라지기 때문입니다. LOCAL_COMMAND_DISABLED도 마찬가지로 보수적입니다: 해석되지 않은 Include나 가능한 PermitLocalCommand yes가 명령을 유효하게 만들 수 있을 때는 억제됩니다. 가장 정확한 결과를 얻으려면 일반 CLI나 저장된 에디터 문서를 통해 Include를 해석하세요.

개발

Rust 1.85 이상이 필요합니다.

도구 다운로드