Введение / Зачем это нужно
Шифрование файлов — простой способ защитить конфиденциальную информацию от посторонних глаз. GPG (GNU Privacy Guard) — бесплатный инструмент, который обеспечивает военное шифрование и работает на всех дистрибутивах Linux. После выполнения нескольких команд вы сможете быстро превратить любые текстовые файлы, архивы или резервные копии в безопасные, доступные только по ключу байты.
Требования / Подготовка
- Установленный GPG (
gnupgилиgnupg2). - Права суперпользователя (
sudo) для установки пакетов. - Свободное место для зашифрованных файлов.
- Необязательно: существующий ключ GPG (если вы хотите использовать его для шифрования).
Шаг 1: Установка GPG
Откройте терминал и выполните команду для вашего дистрибутива:
# Для Debian/Ubuntu
sudo apt update && sudo apt install gnupg
# Для Fedora/CentOS
sudo dnf install gnupg2
После установки проверьте версию:
gpg --version
Шаг 2: Генерация ключа (если у вас его ещё нет)
Если у вас ещё нет ключа GPG, создайте новый. Команда запустит интерактивный мастер:
gpg --full-generate-key
Следуйте подсказкам:
- Выберите тип ключа:
RSA and RSA (default)(нажмите Enter). - Выберите длину ключа:
4096(рекомендуется). - Укажите срок действия ключа:
0(бессрочный) или конкретную дату. - Введите основное имя: ваше имя и электронная почта.
- Задайте надёжную парольную фразу — запомните её или сохраните в менеджере паролей.
Шаг 3: Шифрование отдельного файла
Симметричное шифрование с использованием AES‑256 — быстрый способ защитить один файл:
gpg --symmetric --cipher-algo AES256 /path/to/file.txt
После выполнения команды в той же директории появляется новый файл:
/path/to/file.txt.gpg
Только тот, у кого есть парольная фраза (или импортированный секретный ключ), может его расшифровать.
Шаг 4: Шифрование всей папки
Если вам нужно защитить несколько файлов, используйте простой скрипт:
#!/bin/bash
for f in *; do
if [ -f "$f" ]; then
gpg --symmetric --cipher-algo AES256 "$f"
fi
done
Сохраните его как encrypt_dir.sh, сделайте исполняемым (chmod +x encrypt_dir.sh) и запустите в целевой папке:
./encrypt_dir.sh
Каждый исходный файл получит расширение .gpg.
Проверка результата
После шифрования убедитесь, что файл действительно защищён:
- Без ключа – расшифровка должна завершиться с ошибкой:
gpg --decrypt /path/to/file.txt.gpg
Если вы не ввели правильную парольную фразу, вы увидите сообщениеgpg: decryption failed: no secret key. - С ключом – импортируйте секретный ключ (если он не используется автоматически) и расшифруйте:
gpg --decrypt /path/to/file.txt.gpg > /path/to/decrypted.txt
Проверьте содержимое файлаdecrypted.txt. Оно должно совпадать с исходным. - Размер – зашифрованный файл обычно больше исходного на несколько килобайт; это нормально.
Возможные проблемы
| Симптом | Вероятная причина | Решение |
|---|---|---|
gpg: command not found | GPG не установлен или отсутствует в PATH | Выполните команду установки для вашего дистрибутива (см. Шаг 1). |
gpg: key generation failed: No entropy | Недостаток случайных данных (часто на виртуальных машинах) | Используйте rng-tools (sudo apt install rng-tools или sudo dnf install rng-tools), затем запустите rngd -r /dev/urandom. |
gpg: symmetric encryption failed: No such file or directory | Неправильный путь к файлу | Убедитесь, что путь /path/to/file.txt существует; используйте ls -l для проверки. |
| Забыт парольная фраза | Не сохранена в менеджере паролей | Создайте новый ключ, импортируйте старый закрытый ключ (gpg --import) и установите новую парольную фразу. |
| Зашифрованный файл слишком большой | GPG может разделить большие файлы на несколько частей | Используйте gpg --symmetric --cipher-algo AES256 --compress-algo 1 --s2k-mode 3 для уменьшения размера или шифруйте архив (tar -cvf archive.tar.gz file* перед шифрованием). |
gpg: decrypt: plaintext file exists | Файл с таким именем уже существует | Укажите другой путь для выходного файла (> /new/path/decrypted.txt) или удалите старый файл. |
Если проблема не решена, проверьте список открытых ключей (gpg --list-keys) и убедитесь, что используемая парольная фраза совпадает с той, что была задана при генерации ключа.