Добавьте сертификат в ssh-agent для ключа, который уже находится внутри агента
Я пишу клиентскую программу, которая позволяет пользователю войти на сервер. Программа ожидает, что пользователь уже настроил ssh-агент и добавил к нему свою пару ключей RSA. Он захватывает открытый ключ и отправляет его удаленному подписавшему, который возвращает сертификат SSH для открытого ключа. Этот сертификат заявляет, что владельцу открытого ключа разрешено входить на сервер.
Я хочу, чтобы клиентская программа добавила сертификат агенту и связала его с ключом, чтобы он мог подключиться по ssh к удаленному серверу, используя ключ с сертификатом. Как я могу это сделать?
2 ответа
Я тоже искал решение этой проблемы.
Ussh от Uber, кажется, предоставляет такую возможность, хотя и с оговоркой, что генерируется новая пара ключей. У объявления центра сертификации Uber есть эта дразнящая цитата:
Сотрудник получает сертификат ussh при запуске команды ussh. Это подключается к USSHCA, выполняет диалог pam и перенаправляет ssh-агент клиента в CA. Если клиент успешно проходит аутентификацию, CA генерирует новый ключ ssh, заполняет связанный сертификат сконфигурированной информацией (срок действия, пользователь, для которого он действителен, допустимые параметры и т. Д.) И добавляет и ключ, и сертификат в удаленный агент. Сертификаты добавляются к агенту с тайм-аутом, указывающим агенту удалить ключи по истечении срока действия сертификата.
Модуль ussh PAM находится на github.
Вы хотите реализовать временный доступ по SSH, выпуская временные сертификаты OpenSSH? Если да, почему бы вам просто не генерировать новую пару ключей каждый раз, когда пользователь проходит аутентификацию в вашем SSH-CA?
В любом случае: OpenSSH имеет жестко заданные соглашения о именах файлов. Вы должны поместить сертификат OpenSSH помимо вашего файла закрытого ключа и вызвать ssh-add.
Ваша пара ключей:
$HOME/.ssh/id_rsa
$HOME/.ssh/id_rsa.pub
Ваш сертификат OpenSSH должен находиться здесь:
$HOME/.ssh/id_rsa-cert.pub