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» и находиться в том же каталоге, иначе он не будет использовать этот и все это не работает.

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

  • Установка fail2ban на CentOS 7
  • установка / настройка и запуск sshguard на debian
  • Как я могу перезапустить демон SSH на Ubuntu?
  • Неожиданное поведение совпадения в sshd_config
  • SSH-сервер также запускает клиент OpenVPN - время входящего SSH
  • Аутентификация отказалась: плохое владение или режимы для файла /var/git/.ssh/authorized_keys
  • Как проверить, успешно ли у пользователя root ssh'd на моем сервере?
  • tmux сеанс убит при отключении от ssh
  • Разрешить только определенным пользователям входить в систему через ssh на одном порту, а другие - для входа через другой порт
  • Каковы попытки входа ssh без значения пользователя в auth.log
  • Настройте сервер OpenSSH, чтобы не требовать пароль * или * для конкретного пользователя
  • Interesting Posts

    Можно ли указать команду at в одной строке?

    Okular – прозрачная встроенная заметка?

    Как проверить, какие файлы будут скопированы с помощью команды cp?

    Как изменить версию ядра Linux

    что происходит во время переключения режима мастер-мастерства?

    Сценарий для удаления файлов, не соответствующих определенным именам файлов

    Стабильный / LTS Linux дистрибутив (Fedora, openSUSE, Ubuntu, Debian) с простой установкой VirtualBox 5+?

    Как установить dvd-слайд-шоу на Centos 5?

    В чем разница между выводами и остановками в командах мультиплексирования ssh?

    Активировать Wi-Fi при запуске 3 запуска

    Как мне получить Ctrl + Alt + t для запуска терминала в Linux Mint 13 MATE?

    Что мне нужно в моем скрипте, чтобы иметь возможность изменять право собственности на структуру каталогов, принадлежащую root, текущему пользователю, выполняющему сценарий bash?

    Используйте `cut` для извлечения списка из / etc / passwd

    Проблемы с обновлением Centos 7.0

    Почему netcat не использует правильный интерфейс, связанный с IP?

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