17.9. Автоматическое завершение ssh-agent при выходе
Проблема
Все существующие процессы ssh-agent должны автоматически завершаться при выходе из системы, чтобы повысить безопасность. Оставленные активными процессы ssh-agent могут представлять потенциальную угрозу, если кто-то получает доступ к сеансу пользователя или системе в отсутствии владельца.
Решение
Чтобы настроить автоматическое завершение всех процессов ssh-agent при выходе из системы, добавьте следующую запись в файл ~/.bash_logout
:
kill $SSH_AGENT_PID
Комментарий
Не включайте эту команду в ~/.bash_logout
, если вы используете программу keychain
. Keychain позволяет сохранить сеанс ssh-agent при повторном входе в систему, чтобы пользователь не вводил пароли каждый раз. Использование команды kill $SSH_AGENT_PID
с keychain нарушает цель его работы, поэтому этот метод лучше подходит тем, кто не применяет keychain.
Если на вашем компьютере отсутствует файл ~/.bash_logout
, вы можете создать его. В качестве образца используйте общесистемный файл /etc/skel/.bash_logout
, который часто содержит типичные команды для очистки сеанса пользователя.
Эта настройка полезна на многопользовательских системах, таких как серверы или общедоступные компьютеры. В этом случае завершение ssh-agent по окончании сеанса уменьшает риск несанкционированного доступа, оставляя минимальный след после пользователя. Использование kill $SSH_AGENT_PID
в ~/.bash_logout
даёт уверенность, что сессия агента будет завершена автоматически при каждом выходе.
Дополнительные рекомендации по безопасности ssh-agent
Для обеспечения максимальной безопасности можно также использовать следующие советы:
- Используйте переменную
SSH_AUTH_SOCK
для настройки временного хранения информации об аутентификации. Эту переменную можно настраивать, чтобы сделать сокет доступным только текущему пользователю. - Регулярно проверяйте активные процессы ssh-agent. Команда
ps -ef | grep ssh-agent
поможет вам увидеть запущенные процессы. Если вы видите процесс ssh-agent, который не используется, его можно завершить командойkill
. - Если необходимо, ограничьте доступ к файлу
~/.bash_logout
, чтобы другие пользователи не могли его изменять. Используйте командуchmod 600 ~/.bash_logout
, чтобы сделать файл доступным только владельцу. - Рассмотрите возможность настройки cron или других инструментов автоматизации для периодической проверки или завершения неактивных сеансов ssh-agent.
Использование keychain для управления ключами
Если вы хотите сохранить агента активным при каждом входе, рассмотрите возможность использования утилиты keychain
. Она позволяет хранить сессии ssh-agent, чтобы не приходилось вводить пароль при каждом запуске SSH. Keychain особенно удобен, если вы работаете в среде с частыми подключениями. Для установки keychain используйте пакетный менеджер вашего дистрибутива:
# Для Debian/Ubuntu:
sudo apt install keychain
# Для CentOS/RHEL:
sudo yum install keychain
После установки keychain можно добавить его запуск в файл ~/.bash_profile
или аналогичный файл сеанса. Например:
eval $(keychain --eval --agents ssh id_rsa)
Эта команда запускает keychain и связывает его с выбранным ключом. Теперь ssh-agent будет автоматически доступен при каждом входе в систему, пока keychain поддерживает сеанс.
См. также
bash(1), ssh-agent(1).