Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
sshconfig-lint — Линтер на основе правил для конфигурационных файлов клиента OpenSSH, который обнаруживает дублирующиеся хосты, отсутствующие файлы identity, слабые алгоритмы, проблемы с порядком подстановочных знаков и опасные настройки, с выводом в формате JSON и кодами возврата, удобными для CI. | Kitploit
Инструменты/GitHubGitHub/noah4ever/sshconfig-lint
Утилиты общего назначенияСтатический анализАнализ КодаАудит конфигурацииСетевая безопасностьDevSecOps
GitHubnoah4ever/sshconfig-lint

sshconfig-lint

Репозиторий

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →

Описание

Линтер на основе правил для конфигурационных файлов клиента OpenSSH, который обнаруживает дублирующиеся хосты, отсутствующие файлы identity, слабые алгоритмы, проблемы с порядком подстановочных знаков и опасные настройки, с выводом в формате JSON и кодами возврата, удобными для CI.

165 месяцев назадЕщё не проверено
Поделиться

sshconfig-lint

Проверьте ваш ~/.ssh/config на распространённые ошибки.

Проверяет на дублирующиеся блоки хостов, отсутствующие файлы идентификации, проблемы с порядком подстановок, слабые алгоритмы, дублирующиеся директивы и многое другое. Поддерживает директивы Include с обнаружением циклов.

https://github.com/user-attachments/assets/4d995679-baed-4f20-9ba8-8f3ec94c64fd

Установка

Быстрая установка (Linux / macOS)

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

Установите VERSION=v0.1.0 или INSTALL_DIR=~/.local/bin, чтобы переопределить значения по умолчанию.

macOS (Homebrew)

root@kitploit:~
brew tap Noah4ever/tap
brew install sshconfig-lint

дополнительно можно выполнить untap Noah4ever/tap, чтобы удалить tap и оставить список tap чистым

Cargo

root@kitploit:~
cargo install sshconfig-lint

AUR

sshconfig-lint-bin — предварительно собранные бинарные файлы

root@kitploit:~
yay -S sshconfig-lint-bin
root@kitploit:~
paru -S sshconfig-lint-bin

Готовые бинарные сборки

Загрузите бинарный файл со страницы релизов.

Использование

root@kitploit:~
# проверить стандартный ~/.ssh/config
sshconfig-lint

# проверить конкретный файл
sshconfig-lint --config /path/to/config

# вывод в формате json
sshconfig-lint --format json

# считать предупреждения ошибками (полезно в CI)
sshconfig-lint --strict

# пропустить разрешение Include
sshconfig-lint --no-includes

Пример вывода

root@kitploit:~
line 4: [warning] WILDCARD_ORDER (wildcard-host-order) Host 'github.com' appears after 'Host *' (line 1); it will never match because Host * already matched (hint: move Host * to the end of the file)
line 7: [warning] DUP_HOST (duplicate-host) duplicate Host block 'github.com' (first seen at line 4) (hint: remove one of the duplicate Host blocks)
line 3: [error] MISSING_IDENTITY (identity-file-exists) IdentityFile not found: ~/.ssh/id_missing (hint: check the path or remove the directive)

Вывод сортируется по файлу и номеру строки, что делает его детерминированным при разных запусках (стабилен для сравнений в CI и снимков).

Ошибки отображаются красным, предупреждения — жёлтым, информационные сообщения — голубым. Цвета автоматически отключаются, если stdout не является терминалом или установлена переменная NO_COLOR.

Коды выхода

КодЗначение
0Чисто, ошибок не найдено
1Обнаружена хотя бы одна ошибка (или предупреждение с флагом --strict)
2Файл конфигурации не найден

Правила

Каждое замечание имеет стабильный код, который можно использовать в скриптах для поиска или сопоставления.

Замечания по возможности содержат подсказку, например «перенесите Host * в конец файла».

Что обрабатывается

  • Несколько шаблонов хостов (Host github.com gitlab.com)
  • Несколько шаблонов включения (Include conf.d/*.conf extra.conf)
  • Встроенные комментарии (IdentityFile ~/.ssh/id # my key)
  • Значения в кавычках (ProxyCommand "ssh -W %h:%p bastion")
  • Разрешение Include с обнаружением циклов

Разработка

root@kitploit:~
cargo test          # запустить все тесты
cargo test --lib    # только модульные тесты
cargo clippy        # линтинг
cargo fmt --check   # проверка форматирования

Структура проекта

root@kitploit:~
src/
  main.rs        CLI
  lib.rs         Публичный API (lint_file, lint_str)
  model.rs       AST типы
  lexer.rs       Токенизатор
  parser.rs      Строит AST конфигурации из токенов
  resolve.rs     Раскрытие Include + обнаружение циклов
  report.rs      Текстовые и JSON форматтеры
  rules/
    mod.rs       Трейт Rule и исполнитель
    basic.rs     Встроенные правила
tests/
  fixtures/      Примеры конфигурационных файлов
  cli.rs         Интеграционные тесты CLI
  integration.rs Тесты на основе фикстур

Добавление правила

  1. Реализуйте трейт Rule в src/rules/basic.rs
  2. Зарегистрируйте его в run_all() в src/rules/mod.rs
  3. Сначала напишите тесты, затем добейтесь их прохождения

Подробнее см. в CONTRIBUTING.md.

Лицензия

MIT

Скачать инструмент
КодПравилоВажностьОписание
DUP_HOSTduplicate-hostпредупреждениеДва блока Host с одинаковым шаблоном
MISSING_IDENTITYidentity-file-existsошибкаПуть IdentityFile не существует
WILDCARD_ORDERwildcard-host-orderпредупреждениеHost * стоит раньше конкретных шаблонов
WEAK_ALGOdeprecated-weak-algorithmsпредупреждениеСлабый или устаревший алгоритм (3des-cbc, arcfour, hmac-md5, ssh-dss и т.д.)
DUP_DIRECTIVEduplicate-directivesпредупреждениеОдна и та же директива повторяется в одной области (действует только первое значение)
INSECURE_OPTinsecure-optionпредупреждениеОпасная настройка, например StrictHostKeyChecking no или ForwardAgent yes в Host *
UNSAFE_CTRL_PATHunsafe-control-pathпредупреждениеВ ControlPath отсутствуют %h, %p, %r (или %C) — соединения могут использовать один сокет
INCLUDE_CYCLEinclude-cycleошибкаЦиклическая цепочка Include
INCLUDE_READinclude-readошибкаНевозможно прочитать включённый файл
INCLUDE_GLOBinclude-globошибкаНекорректный шаблон Include glob
INCLUDE_NO_MATCHinclude-no-matchинформацияШаблон Include не соответствует ни одному файлу