← Назад к вопросам

Где находятся конфигурационные файлы OpenSSH?

1.3 Junior🔥 181 комментариев
#Linux и администрирование#Безопасность

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Расположение конфигурационных файлов OpenSSH

Конфигурационные файлы OpenSSH расположены в различных директориях в зависимости от типа файла и операционной системы. Основное разделение идет на системные (глобальные) файлы, которые влияют на всех пользователей, и пользовательские файлы, находящиеся в домашних каталогах. Ниже представлена детальная структура.

Основные системные конфигурационные файлы (глобальные)

Эти файлы обычно находятся в директории /etc/ssh/ на большинстве Unix-подобных систем (Linux, macOS, BSD).

  • /etc/ssh/sshd_configглавный конфигурационный файл сервера SSH (sshd).
    Он определяет настройки демона, такие как порт прослушивания, разрешенные методы аутентификации, настройки безопасности, параметры журналирования и многое другое.
```bash
# Пример просмотра и редактирования
sudo cat /etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config
```
  • /etc/ssh/ssh_configглобальный конфигурационный файл SSH-клиента.
    Задает параметры по умолчанию для всех пользователей системы при подключении *с* данного хоста *на* удаленные серверы.
```bash
# Пример: определение настроек для определенных хостов
Host *.example.com
    User admin
    Port 2222
```
  • Ключи хоста (Host Keys) — также находятся в /etc/ssh/.
    Файлы с именами `ssh_host_*_key` (приватные ключи) и `ssh_host_*_key.pub` (публичные ключи). Они идентифицируют сервер для клиентов.
```bash
# Пример списка ключей
ls -la /etc/ssh/ssh_host_*
```

Пользовательские конфигурационные файлы

Эти файлы находятся в домашнем каталоге пользователя (~/.ssh/) и имеют приоритет над глобальными настройками. Директория ~/.ssh обычно создается при первом использовании SSH и должна иметь строгие права доступа (700).

  • ~/.ssh/configпользовательский конфигурационный файл SSH-клиента.
    Позволяет настраивать параметры подключения для конкретных удаленных хостов (алиасы, пользователи, порты, ключи и т.д.). Крайне полезен для DevOps-инженеров, работающих с множеством серверов.
```bash
# Пример ~/.ssh/config
Host myserver-prod
    HostName 192.168.1.100
    User deploy
    Port 2222
    IdentityFile ~/.ssh/id_ed25519_prod
    StrictHostKeyChecking no

Host github.com
    User git
    IdentityFile ~/.ssh/id_ed25519_github
```
  • ~/.ssh/authorized_keysключевой файл для аутентификации на сервере.
    Содержит публичные ключи (`ssh-rsa AAAA...`, `ssh-ed25519 AAAA...`), которые разрешены для входа на данный аккаунт. Добавление своего публичного ключа в этот файл на удаленном сервере позволяет входить без пароля.
```bash
# Пример добавления ключа на сервер
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@host
```
  • ~/.ssh/known_hostsбаза данных известных ключей хостов.
    Содержит отпечатки (`fingerprints`) публичных ключей серверов, к которым подключался пользователь. При первом подключении SSH запрашивает подтверждение, а затем сохраняет ключ здесь для проверки в будущем (защита от атак "man-in-the-middle").

  • Файлы приватных и публичных ключей пользователя.
    Обычно имеют имена `id_rsa`, `id_rsa.pub`, `id_ed25519`, `id_ed25519.pub`, `id_ecdsa`. Приватные ключи должны иметь права `600` (только чтение/запись для владельца).

Особенности для разных операционных систем

  • Linux (Debian/Ubuntu, RHEL/CentOS, Arch и др.): Стандартный путь — /etc/ssh/ и ~/.ssh/.
  • macOS: Аналогично Linux, основной путь — /etc/ssh/ и ~/.ssh/. Настройки могут также интегрироваться с системой ключей Keychain.
  • FreeBSD/OpenBSD: Также /etc/ssh/ и ~/.ssh/. В OpenSSH разработан в OpenBSD, поэтому расположение "каноническое".
  • Windows (при использовании OpenSSH в составе Windows 10/11 или WSL):
    *   **Глобальные**: `C:\ProgramData\ssh\` (особенно `sshd_config`).
    *   **Пользовательские**: `%USERPROFILE%\.ssh\` (например, `C:\Users\Username\.ssh\`).
    *   **В WSL (Windows Subsystem for Linux)**: Используется стандартная Linux-структура внутри WSL-дистрибутива (`/etc/ssh/`, `~/.ssh/`).

Права доступа (Critical для безопасности!)

Некорректные права доступа — частая причина ошибок "Permissions are too open". SSH жестко проверяет их.

# Рекомендуемые права для ~/.ssh и файлов
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/config
chmod 600 ~/.ssh/id_*        # приватные ключи
chmod 644 ~/.ssh/id_*.pub    # публичные ключи
chmod 644 ~/.ssh/known_hosts

Практическое значение для DevOps

Знание расположения этих файлов необходимо для:

  1. Безопасной настройки сервера: Редактирование /etc/ssh/sshd_config для отключения парольной аутентификации, смены порта, настройки AllowUsers.
  2. Автоматизации и управления доступом: Массовое размещение публичных ключей в authorized_keys через Ansible/Puppet для доступа к серверам.
  3. Настройки рабочего окружения: Создание удобных алиасов в ~/.ssh/config для быстрого доступа к сотням серверов.
  4. Диагностики проблем: Проверка логов (/var/log/auth.log, /var/log/secure), known_hosts при ошибках проверки ключа хоста, прав доступа к файлам ключей.

Таким образом, структура конфигурационных файлов OpenSSH логично разделена на системный и пользовательский уровни, что обеспечивает и централизованное управление политиками безопасности, и гибкость индивидуальных настроек, что является краеугольным камнем в инфраструктурной работе DevOps-инженера.

Где находятся конфигурационные файлы OpenSSH? | PrepBro