Архивиране и възстановяване на SSH ключове

Архивиране и възстановяване на SSH ключове

Кратко описание: Практическо, подробно ръководство как да архивираш, криптираш и безопасно възстановяваш SSH частни ключове. Подходящо за лични резервни копия и за споделяне с колеги.


1. Въведение

SSH частните ключове са входът към сървъри и услуги. Загубата или компрометирането им може да доведе до сериозни проблеми. Това ръководство показва сигурна процедура: криптиране на копие, архивиране на външен носител, тест на възстановяване и тогава — евентуално — изтриване на оригинала.

Цел: да сведеш до минимум риска от загуба или компрометиране, като винаги имаш тестван резервен екземпляр.


2. Предпоставки

  • Локална работна машина с openssl, zip (или 7z), shred, ssh-keygen.
  • Външен носител (флашка, външен диск) или сигурно облачно хранилище.
  • Достъп до команден ред (bash) и права да четеш ~/.ssh.
  • Създай временна работна папка, например ~/key_backup_tmp.

3. Модел на заплахи (кратко)

  • Неоторизиран достъп до носителя — решава се чрез криптиране с парола.
  • Загуба по време на трансфер — решава се чрез проверка/тест на архива преди изтриване.
  • Остатъци след изтриване на SSD/COW FS — shred може да не е напълно ефективен.

4. Общ принцип (безопасен работен поток)

  1. Направи локално копие на ключа.
  2. Криптирай копието (openssl или gpg).
  3. Архивирай криптираните файлове (7z с AES-256 предпочитано пред zip).
  4. Копирай архива на външен носител.
  5. Тествай възстановяването в отделна временна директория. Проверка на отпечатъка на ключа.
  6. Ако всичко е наред — изтрий оригинала (и/или локалните копия). Ако не — не изтривай.

5. Подробни стъпки с команди

Всички команди приемат, че работиш като обикновен потребител и ключът се намира в ~/.ssh/bahmammamu.

5.1 Подготвителни операции

mkdir -p ~/key_backup_tmp
chmod 700 ~/key_backup_tmp

5.2 Направи локално копие (никога не работи директно върху оригинала)

cp ~/.ssh/bahmammamu ~/key_backup_tmp/bahmammamu.orig
chmod 600 ~/key_backup_tmp/bahmammamu.orig

5.3 Криптирай копието (вариант с OpenSSL)

openssl enc -aes-256-cbc -salt -pbkdf2 -in ~/key_backup_tmp/bahmammamu.orig -out ~/key_backup_tmp/bahmammamu.enc
# ще те пита за парола — запомни/съхрани я сигурно

Бележка: -pbkdf2 подобрява устойчивостта към brute-force. Можеш да използваш и gpg (симетрично) или 7z вътре в архива.

5.4 Архивирай криптирания файл (препоръчителен: 7z)

# Ако имаш 7z:
7z a -p -mhe=on ~/key_backup_tmp/bahmammamu.7z ~/key_backup_tmp/bahmammamu.enc
# Ако нямаш 7z, използвай zip:
zip -e ~/key_backup_tmp/bahmammamu.zip ~/key_backup_tmp/bahmammamu.enc
  • -p ще те попита парола за архива.
  • -mhe=on скрива имената на файловете в архива (7z).

5.5 Копирай архива на външен носител

# Пример (адаптирай името на устройството/пътя):
cp ~/key_backup_tmp/bahmammamu.7z /media/$USER/ИМЕ_НА_ФЛАШКА/

5.6 Тествай архива преди да докоснеш оригинала

На текущата машина или на другата машина бързо провери целостта:

# за 7z:
7z t /media/$USER/ИМЕ_НА_ФЛАШКА/bahmammamu.7z
# за zip:
unzip -t /media/$USER/ИМЕ_НА_ФЛАШКА/bahmammamu.zip

Ако t и -t върнат успешен резултат — архивът е четим.

5.7 Тест на възстановяване (важно!)

На тестова машина (или в отделна временна папка):

mkdir -p ~/tmp_bah && cd ~/tmp_bah
# Разархивирай
7z x /media/$USER/ИМЕ_НА_ФЛАШКА/bahmammamu.7z
# Или unzip за zip
# Декриптирай
openssl enc -d -aes-256-cbc -pbkdf2 -in bahmammamu.enc -out bahmammamu
# Провери отпечатъка на ключа
ssh-keygen -y -f bahmammamu > bahmammamu.pub
ssh-keygen -lf bahmammamu.pub

# Сравни отпечатъка с този от оригинала (ако го имаш записан).

Ако съвпада — възстановяването е успешно.

5.8 След като тестът е успешен — изтрий оригинала (по избор)

# Ако искаш overwrite (за традиционни HDD):
shred -u ~/.ssh/bahmammamu

# Ако е SSD или файловата система е copy-on-write (btrfs, ZFS), shred може да не е ефективен.
# В този случай можеш да изтриеш и да разчиташ на криптирания резерв, или да използваш физическо унищожение.
rm ~/.ssh/bahmammamu

5.9 Почисти временните файлове локално

rm -rf ~/key_backup_tmp
rm -rf ~/tmp_bah

6. Полезни съвети и бележки

  • Винаги тествай възстановяване преди изтриване.
  • Дръж паролите за openssl/архива в мениджър на пароли, а не в plain-text файлове.
  • Използвай различни пароли за криптиране и архивиране (два слоя защита).
  • Ако ще пазиш ключовете дългосрочно, разгледай gpg --symmetric или sops/KMS решения.
  • Помисли за хардуерни токени (YubiKey) за ключове с критична важност.
  • За съвместимост: ssh-keygen -y -f key извежда публичния ключ; можеш да сравняваш отпечатъци.

7. Алтернативи и допълнителни инструменти

  • GnuPG (gpg) — симетрично криптиране:
gpg --symmetric --cipher-algo AES256 ~/key_backup_tmp/bahmammamu.orig
  • 7z — силно архивиране с AES-256 и възможност да скриеш имената на файловете:
7z a -p -mhe=on bahmammamu.7z bahmammamu.enc
  • sops или управление на ключове чрез KMS (AWS KMS, GCP KMS) — за по-големи екипи и автоматизация.

8. Скрипт за автоматизация (пример)

#!/usr/bin/env bash
set -euo pipefail

KEY=~/.ssh/bahmammamu
TMPDIR=~/key_backup_tmp
ARCHIVE_NAME=bahmammamu.7z
DEST=/media/$USER/ИМЕ_НА_ФЛАШКА/

mkdir -p "$TMPDIR"
cp "$KEY" "$TMPDIR/bahmammamu.orig"
chmod 600 "$TMPDIR/bahmammamu.orig"

openssl enc -aes-256-cbc -salt -pbkdf2 -in "$TMPDIR/bahmammamu.orig" -out "$TMPDIR/bahmammamu.enc"
7z a -p -mhe=on "$TMPDIR/$ARCHIVE_NAME" "$TMPDIR/bahmammamu.enc"
cp "$TMPDIR/$ARCHIVE_NAME" "$DEST"
# Тествай архива
7z t "$DEST/$ARCHIVE_NAME"

# По избор: почисти локалните временни файлове
rm -rf "$TMPDIR"

echo "Архивиране успешно. Тествай възстановяване преди да изтриеш оригинала."

Забележка: скриптът не изтрива оригинала. Изтриването трябва да е съзнателна стъпка след успешен тест.


9. Чеклист преди окончателно изтриване на оригинала

  • Архивът е успешно записан на външен носител.
  • Команда 7z t/unzip -t връща успешен резултат.
  • Успешно възстановяване в ~/tmp_bah и отпечатъкът съвпада.
  • Паролите са архивирани/съхранени в мениджър на пароли.
  • Разбрали сте политиката за носителя (ако е корпоративен — информационна сигурност).

10. Често задавани въпроси (FAQ)

В: Shred ли е достатъчен за SSD?
A: Не винаги. SSD контролерите и COW FS могат да запазят копия. За SSD е по-безопасно да разчиташ на криптиран резерв и/или физическо унищожение.

В: Мога ли да ползвам само zip?
A: Можеш, но zip паролата и методът за криптиране могат да са по-слаби. 7z или gpg са по-сигурни.

В: Как да съхранявам паролите сигурно?
A: Използвай мениджър на пароли (Bitwarden, KeePassXC, 1Password) и двуфакторна автентикация там.

Федя Серафиев

Федя Серафиев

Федя Серафиев e собственик на уебсайта urocibg.eu. Той намира удовлетворение в това да помага на хората да решават и най-сложните технически проблеми. Сегашната му цел е да пише лесни за следване статии, така че подобни проблеми изобщо да не възникват.

Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу:

Подобни статии