Использование ~/.ssh/authorized_keys для управления входящими SSH-соединениями

Использование ~/.ssh/authorized_keys для управления входящими SSH-соединениями
Photo by Kelly Sikkema / Unsplash

Файл ~/.ssh/authorized_keys позволяет настроить команды, которые будут выполняться при входящих SSH-соединениях. Это полезный инструмент для управления доступом и обеспечения безопасности, особенно при работе с резервным копированием данных.

Настройка резервного копирования с использованием authorized_keys

В данном примере рассматривается использование authorized_keys для настройки резервного копирования базы данных Bacula и её конфигурации с помощью rsync. Резервные копии передаются на несколько хостов, и для управления этим процессом используются специальные настройки в файле authorized_keys.

Пример настройки

Ниже приведены строки из файла /home/rsyncer/.ssh/authorized_keys на хосте dbclone, который собирает резервные копии баз данных с различных хостов:

from="x8dtu.example.org,10.1.1.1",command="/usr/local/sbin/rrsync -ro /usr/home/rsyncer/backups/bacula-database/postgresql/" ssh-ed25519 AAAAC3thisisalsonotmyrealpublickeybcxpFeUMAC2LOitdpRb9l0RoW7vt5hnzwt [email protected]

Эта строка означает:

  • При входящем SSH-соединении с клиента x8dtu.example.org или 10.1.1.1 выполняется команда /usr/local/sbin/rrsync -ro /usr/home/rsyncer/backups/bacula-database/postgresql/.
  • Клиент должен использовать указанный SSH-ключ.
  • Комментарий [email protected] не влияет на выполнение.

Ограничение доступа

Программа rrsync позволяет ограничить доступ к определённой директории и сделать её доступной только для чтения. Это полезно для защиты важных данных, таких как резервные копии баз данных.

Решение проблемы с обратным копированием

Для копирования данных в обратном направлении, с x8dtu на dbclone, был разработан скрипт, который инициирует rsync-сессию на dbclone и копирует данные с x8dtu.

Пример скрипта:

#!/bin/sh
BACKUPDIR=${HOME}/backups/x8dtu-pg01/database-backup
IDENTITY_FILE_RSYNC=${HOME}/.ssh/id_ed25519
SERVER_TO_RSYNC=x8dtu.example.org

cd ${BACKUPDIR}
/usr/local/bin/rsync -e "/usr/bin/ssh -i ${IDENTITY_FILE_RSYNC}" --recursive -av --stats --progress --exclude 'archive' ${SERVER_TO_RSYNC}:/ ${BACKUPDIR}

Добавление нового ключа

Для выполнения различных задач требуется использовать разные SSH-ключи. В данном случае был создан новый ключ и добавлен в authorized_keys:

from="x8dtu.startpoint.vpn.unixathome.org,10.8.1.100",command="/home/rsyncer/bin/rsync-backup-from-x8dtu.sh" ssh-ed25519 AAAAC3thisisthesecondsshkeypKBYib6rCHZ+zK5Q3LvJFukdFzT+Q92GUtej6SLW8 [email protected]

Это позволяет выполнять разные команды в зависимости от используемого SSH-ключа и источника соединения.

Заключение

Использование ~/.ssh/authorized_keys для управления входящими SSH-соединениями позволяет гибко настраивать доступ и обеспечивать безопасность при резервном копировании данных. Этот подход помогает защитить важные системы и данные от несанкционированного доступа.

Оригинал статьи.