SSH через cert-authority

Я пытаюсь использовать SSH с помощью подписанных сертификатов. Я использую ssh -i keys/client.key для подключения к целевому устройству. Если я ssh-keygen -y -f keys/client.key открытый ключ из этого закрытого ключа (с помощью ssh-keygen -y -f keys/client.key ) и поместите его в файл .ssh / authorized_keys, я могу подключиться без проблем.

То, что я пытаюсь сделать, это использовать CA, чтобы все ключи, подписанные этим ЦС, вошли в систему как этот пользователь. Я использовал ssh-keygen -y -f keys/ca.key для создания открытого ключа и помещал его в authorized_keys как «cert-authority sh-rsa AAAB3N ….. Z». Мое понимание с разных сайтов заключается в том, что он должен теперь «работать», за исключением того, что он этого не делает. На стороне клиента я просто получаю «Permission denied (publickey)». У меня нет других записей в файле authorized_keys . На стороне сервера я не получаю сообщение об ошибке и только сообщение, которое клиент отключил.

Я что-то пропустил? Как я могу отлаживать, почему он не работает.

Редактировать # 1

Я сгенерировал секретные ключи с помощью EasyRSA, который представляет собой некоторые сценарии оболочки поверх вызовов openssl. Я думаю, проблема может заключаться в том, что был создан секретный ключ, затем CSR, а затем подписанный сертификат. Поэтому я не думаю, что секретный ключ «подписан» каким-либо образом.

Редактировать # 2

Я пробовал ssh-keygen -s ca.key -I key client.key и я получаю «do_ca_sign: невозможно открыть« client.key ». Я попробовал это с недавно созданным ключом RSA, сделанным ssh-keygen и он работал нормально, поэтому ca.key, похоже, в порядке. Я думаю, что есть что-то вроде открытого ключа openssl, который ему не нравится.

2 Solutions collect form web for “SSH через cert-authority”

  1. Ваш клиент не представляет сертификат, потому что у него его нет. Вам нужно сгенерировать один ( ssh-keygen -s keys/ca.key -I jruser -n jruser keys/client.key.pub ). Новый сертификат ( keys/client.key_cert.pub ) автоматически будет keys/client.key_cert.pub ssh и представлен на сервере.
  2. В вашей строке cert-authority в authorized_keys отсутствует требуемое назначение principals (например, principals="jruser" ).
  3. Чтобы отладить его, вы можете использовать ssh -v как обычно. Алгоритмы аутентификации имеют «cert» в своих именах, когда используется аутентификация сертификата.
  4. Я предлагаю использовать параметр TrustedUserCAKeyssshd_config ) вместо того, чтобы писать строки cert-authority , потому что это более старая и более проверенная форма сертификатов пользователя ssh.

Хорошим кратким руководством по настройке этого (и сертификатов ключей хоста) является https://www.digitalocean.com/community/tutorials/how-to-create-an-ssh-ca-to-validate-hosts-and -clients-с-убунту

Кажется, здесь много проблем …

Основная путаница в том, что вы подписываете открытые ключи, а не закрытые ключи. Если вы попытаетесь подписать закрытый ключ с именем «id_rsa», ssh-keygen просто проигнорирует это и будет использовать «id_rsa.pub» в том же каталоге. Если этого открытого ключа нет, он просто дает вам то же сообщение об ошибке, если вы попытались подписать файл, который не существует.

Кроме того, при входе в систему, если вы используете закрытый ключ с именем «some.key», ваш подписанный открытый ключ должен быть вызван «some.key-cert.pub» и находиться в том же каталоге, иначе он не будет использовать этот и все это не работает.

Что касается «принципов» … Если у вас есть они (они не являются обязательными), они указывают, на каких пользователях вы действительно можете войти. Итак, если вы подписываете открытый ключ с принципалами, вы можете использовать его только для входа в систему.

  • Отключить баннер ssh для определенных пользователей или ips
  • Не удалось подключиться после ChrootDirectory в sshd_config
  • Где мои журналы sshd?
  • Не удалось войти в систему с помощью ключа SSH-RSA
  • Аутентификация на основе ключей от PyCharm / JSCH до OpenBSD не выполняется
  • Как работают файлы $ HOME / .ssh и $ HOME / .ssh / authorized_keys, когда несколько пользователей имеют одинаковый UID?
  • Выполнение удаленной команды в SSH-соединении, перед входом в систему
  • Как избежать вызова «startx» при входе в ssh
  • Почему мой Linux не отображает дату последнего входа?
  • SSH-сервер не отключает сеанс, когда я выключаю машину
  • Как изменить тип сервиса хорошо определенных портов в SElinux (centOS 6.5)
  • Interesting Posts

    Какой сетевой интерфейс используется, если они оба являются шлюзом по умолчанию?

    Использование нескольких подстановочных знаков в одном глобусе

    Сценарий Bash функционирует должным образом после запуска GUI, но работает по-разному при вызове из Autostart

    Для чего нужен модификатор Mode_switch?

    Синтаксическая ошибка tcpdump при указании portrange как документально

    ограничение скорости линукса tbf не функционирует, как ожидалось

    Сетевое kernel ​​Linux Отладочное сообщение Ubuntu не отображается с помощью printk / pr_debug?

    Можно ли настроить защищенный PXE-сервер, ansible в Интернете?

    Отключить вывод журнала на консоль

    Сбой umount / home (ZFS) при завершении работы

    Выполняется ли eval путем создания процесса оболочки для оценки следующей команды?

    Bash: Как создать постоянные строки-заменители в командах Bash?

    vmware не распознает Solaris 10 бит-64 гость os

    Настройка cronjob в качестве файла

    Debian 8 устанавливается в гостевой системе QEMU / KVM из-за ошибок ext4-fs / "только для чтения файлов"

    Linux и Unix - лучшая ОС в мире.