Хочу рассказать как безопасно хранить SSH-ключи на локальной машине, не боясь того, что какое-то приложение может украсть или расшифровать их.
Статья будет полезна тем, кто так и не нашел элегантного решения после паранои в 2018 и продолжает хранить ключи в $HOME/.ssh
.
Для решения данной проблемы предлагаю использовать KeePassXC, который является одним из лучших менеджеров паролей, он использует сильные алгоритмы шифрования, а также имеет встроенный SSH-агент.
Это дает возможность безопасно хранить все ключи прямо в базе паролей и автоматически добавлять их в систему при её открытии. Как только база будет закрыта, использование SSH-ключей также станет невозможным.
Первым делом добавим автозапуск SSH-агента при входе в систему, для этого откройте ~/.bashrc
в вашем любимом редакторе и добавьте в самый конец:
SSH_ENV="$HOME/.ssh/environment"
function start_agent {
echo "Initialising new SSH agent..."
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
echo succeeded
chmod 600 "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
}
# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" > /dev/null
#ps ${SSH_AGENT_PID} doesn't work under cywgin
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi
После чего нам нужно включить поддержку в KeePassXC:
Инструменты --> Параметры --> SSH-агент --> Включить SSH-агент
На этом настройка завершена, теперь попробуем добавить новый SSH-ключ в KeePassXC:
Нажимаем на иконку с ключом, затем заполняем данные:
Если ключ защищен паролем, укажите так-же пароль к нему
На вкладке Дополнительные загружаем вложение с нашим id_rsa:
На вкладке SSH-агент, отметим:
- Добавить ключ в агент при открытии/разблокировке базы данных
- Убрать ключ из агента при закрытии/блокировке базы данных
Далее выберем наш ключ (id_rsa) во вложении
И нажмем кнопку Добавить в агент:
Теперь при запуске KeePassXC ключ будет автоматически добавляться в SSH-агент, таким образом его можно больше не хранить на диске!