Я сейчас использую Криптонит для защиты закрытого ключа, который я использую для SSH на хостах. Это работает хорошо, за исключением случаев, когда мне нужно перейти на root.
Когда я sudo
Мне нужно скопировать случайно сгенерированную 20-символьную строку из моего диспетчера паролей, проверить, действительно ли я нахожусь в строке запроса пароля, и вставить его, чтобы моя команда запустилась.
Я бы предпочел использовать свой Yubikey для аутентификации sudo
. Я могу найти 101 руководство о том, как это сделать, когда sudo
на локальных хостах, когда Yubikey подключен к моим локальным хостам, но как я могу это сделать, когда я хочу sudo
на удаленном хосте через SSH с ключом, подключенным к моей локальной машине?
И локальные, и удаленные хосты работают под управлением последних дистрибутивов Linux / GNU, в частности, RHEL / Fedora, если это имеет значение.
Там есть pam_ssh_agent_auth
, который делает именно то, что вам нужно. Этот пакет доступен как для Fedora, так и для RHEL, поэтому процесс настройки и установки очень прост:
yum install pam_ssh_agent_auth
Добавить в свой /etc/sudoers
:
Defaults env_keep += \"SSH_AUTH_SOCK\"
Поместите свой ssh-открытый ключ в /etc/security/authorized_keys
(получить от yubikey например, используя ssh-keygen -D /usr/lib64/pkcs11/opensc-pkcs11.so
)
Добавьте строку в начало /etc/pam.d/sudo
:
auth sufficient pam_ssh_agent_auth.so
Затем вы просто добавляете библиотеку pkcs11 в свой ssh-agent
и ты можешь бежать sudo
без пароля (аутентификация с использованием ключа на токене):
ssh-add -s /usr/lib64/pkcs11/opensc-pkcs11.so
sudo -i
Этот процесс также описан на странице руководства для pam_ssh_agent_auth
.
Обратите внимание, что ключи на yubikey необходимо сгенерировать раньше, но это уже описано в документации Yubico.