Назад | Перейти на главную страницу

Использование Yubikey для sudo через сеанс SSH

Я сейчас использую Криптонит для защиты закрытого ключа, который я использую для 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.