Использование ~/.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-соединениями позволяет гибко настраивать доступ и обеспечивать безопасность при резервном копировании данных. Этот подход помогает защитить важные системы и данные от несанкционированного доступа.

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

Read more

Безопасное управление конфигурациями в Ansible: Полное руководство по использованию rescue и always

Безопасное управление конфигурациями в Ansible: Полное руководство по использованию rescue и always

Введение: Почему это важно В мире DevOps и системного администрирования существует простое правило: всё ломается. Особенно в самый неподходящий момент. Когда вы изменяете конфигурацию критического сервиса (например, Nginx), цена ошибки может быть очень высока — от простого даунтайма до потери данных. Ansible предлагает элегантное решение для безопасного внесения изменений через механизм

Смазывать или не смазывать? Вот в чём вопрос (спойлер: смазывать)

Смазывать или не смазывать? Вот в чём вопрос (спойлер: смазывать)

Если вы когда-нибудь слушали, как ваш 3D-принтер поёт на Z-оси вместо того, чтобы плавно ехать, как по маслу (буквально), — скорее всего, вы уже задавались этим вопросом: чем смазывать кинематику и когда вообще это делать? Спокойно. Без фанатизма и бутылки литола. Сейчас разберёмся, что мажем, чем мажем и зачем. Для валов

Добавление SWAP в Ubuntu

Добавление SWAP в Ubuntu

Что такое Swap и зачем он нужен? Swap (подкачка) — это пространство на диске, которое используется, когда физической оперативной памяти (RAM) становится недостаточно. Когда система Linux исчерпывает доступную RAM, неактивные страницы памяти перемещаются в swap-пространство, освобождая место для активных процессов. Swap может быть организован двумя способами: * Swap-раздел — выделенный раздел на диске

Cold pull — как вытащить засор из сопла и не сломать мозг

Cold pull — как вытащить засор из сопла и не сломать мозг

Знаете, что общего у принтера Flashforge 5M Pro и кофемашины, которая внезапно перестала варить кофе? Правильно — если в узком месте что-то застряло, всё остальное тут же идёт по одному месту. В 3D-принтерах это место — сопло. И когда оно забивается, без паники. Есть старый добрый способ — cold pull. А теперь по-человечески: