We detected you are likely not from a Russian-speaking region. Would you like to switch to the international version of the site?

  Назад к списку статей

Безопасный доступ к удалённым серверам: SSH‑ключи и их управление в Termux

Termux – это полноценная Linux‑среда для Android, позволяющая выполнять большинство серверных задач прямо на смартфоне. Одним из самых важных аспектов работы с удалёнными серверами является безопасный доступ по протоколу SSH. В этой статье мы рассмотрим, как правильно генерировать, хранить и управлять SSH‑ключами в Termux, а также как автоматизировать их использование.

Установка необходимых пакетов

Для работы с SSH в Termux потребуются два пакета: openssh и openssh-client. Установим их:

pkg update && pkg upgrade -y
pkg install openssh openssh-client -y

После установки убедитесь, что команда ssh доступна:

ssh -V

Генерация SSH‑ключей

Для создания новой пары ключей используем ssh-keygen. По умолчанию ключи сохраняются в каталоге ~/.ssh:

ssh-keygen -t ed25519 -a 100 -f ~/.ssh/id_ed25519 -C "your_email@example.com"

Параметры:

  • -t ed25519 – тип ключа, более безопасный и компактный, чем RSA.
  • -a 100 – количество раундов KDF (увеличивает стойкость пароля).
  • -f – путь к файлу ключа.
  • -C – комментарий, обычно email.

При запросе пароля рекомендуется задать сильный пароль‑фразу, так ваш ключ будет защищён даже в случае компрометации устройства.

Настройка ssh‑agent

Для удобного использования ключей без повторного ввода пароля рекомендуется задействовать ssh-agent. В Termux это делается так:

eval $(ssh-agent -s)

Добавляем наш ключ в агент:

ssh-add ~/.ssh/id_ed25519

Если вы хотите, чтобы агент запускался автоматически при каждом старте Termux, добавьте эти строки в файл ~/.bashrc или ~/.zshrc:

# Запуск ssh‑agent
if ! pgrep -u "$USER" ssh-agent > /dev/null; then
  eval $(ssh-agent -s)
fi
# Добавление ключа (пароль‑фразу вводится один раз)
ssh-add -l &>/dev/null || ssh-add ~/.ssh/id_ed25519

Копирование публичного ключа на сервер

Самый простой способ – использовать ssh-copy-id. В Termux он входит в пакет openssh:

ssh-copy-id -i ~/.ssh/id_ed25519.pub user@remote-host

Если ssh-copy-id недоступен, можно выполнить копирование вручную:

cat ~/.ssh/id_ed25519.pub | ssh user@remote-host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Убедитесь, что права доступа к каталогу ~/.ssh и файлу authorized_keys корректные:

ssh user@remote-host "chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"

Конфигурация SSH‑клиента

Для упрощения подключения создайте файл ~/.ssh/config:

Host myserver
    HostName remote-host.example.com
    User user
    IdentityFile ~/.ssh/id_ed25519
    ForwardAgent yes
    ServerAliveInterval 60

Теперь подключение происходит одной командой:

ssh myserver

Ротация и отзыв ключей

Регулярная смена ключей повышает безопасность. Чтобы сгенерировать новый ключ, выполните те же шаги, что и в разделе «Генерация SSH‑ключей», но укажите другое имя, например id_ed25519_2024. После добавления нового публичного ключа на сервер удалите старый из authorized_keys:

ssh myserver "sed -i '/old-key-comment/d' ~/.ssh/authorized_keys"

Не забудьте удалить старый закрытый ключ из ~/.ssh и из ssh-agent:

ssh-add -d ~/.ssh/id_ed25519

Бэкап и синхронизация ключей

Для восстановления доступа в случае потери устройства рекомендуется хранить копию закрытого ключа в зашифрованном виде. Один из вариантов – использовать gpg для шифрования:

gpg -c ~/.ssh/id_ed25519

Полученный файл id_ed25519.gpg можно разместить в облачном хранилище (Google Drive, Nextcloud) или на внешнем носителе. При необходимости расшифровать:

gpg -d id_ed25519.gpg > ~/.ssh/id_ed25519

После восстановления установите правильные права доступа:

chmod 600 ~/.ssh/id_ed25519

Дополнительные меры безопасности

  • Отключите аутентификацию по паролю на сервере (PasswordAuthentication no в sshd_config).
  • Используйте AllowUsers или Match User в sshd_config для ограничения доступа.
  • Включите двухфакторную аутентификацию (Google Authenticator, YubiKey) в сочетании с SSH‑ключами.
  • Регулярно проверяйте журнал /var/log/auth.log на предмет подозрительных попыток.

Автоматизация задач через Termux

С помощью планировщика crontab (пакет cronie) можно выполнять периодические операции, например, обновлять known_hosts или проверять статус соединения:

pkg install cronie -y
crontab -e
# Добавьте строку, которая каждые 6 часов проверяет доступность сервера
0 /6    ssh -o BatchMode=yes myserver "echo alive" || echo "Server down" >> ~/server_status.log

Заключение

Termux предоставляет мощный набор инструментов для безопасного доступа к удалённым серверам прямо с мобильного устройства. Правильное генерирование, хранение и управление SSH‑ключами, их интеграция с ssh-agent, автоматизация через конфиги и скрипты позволяют поддерживать высокий уровень безопасности без потери удобства.

Если вы хотите углубиться в настройку серверов, автоматизацию DevOps‑процессов или нуждаетесь в профессиональном аудите безопасности, команда RybinskLab готова помочь. Мы предоставляем консультации, настройку инфраструктуры и поддержку под ключ, адаптированную под ваши бизнес‑задачи.

* Текст статьи подготовлен и структурирован с использованием технологий искусственного интеллекта. Проверен экспертом RybinskLab.

Поделиться знанием:

Нужна профессиональная помощь?

Меня зовут Усачёв Денис Евгеньевич. Я оказываю IT-услуги в Рыбинске и Ярославской области: настройка серверов, безопасность, автоматизация бизнеса.

Связаться со мной