Перейти к содержимому

6.2.1 JaCarta PKI для OpenSSH

USB-токены и смарт-карты JaCartaИнтеграцииUSB-токены и смарт-карты JaCarta

Данная инструкция описывает процесс настройки двухфакторной аутентификации с помощью USB-токенов и смарт-карт JaCarta® PKI при установлении ssh-соединения с удаленным ПК (сервером) в операционной системе Astra Linux 1.7.

Имя пользователя, для которого настраивается соединение в этой инструкции – admintest.

На клиент должен быть установлен ПК “Единый Клиент JaCarta”, который можно загрузить с официального сайта компании.

  1. Установите OpenSSH Client:

    Окно терминала
    sudo apt install openssh-client
  2. Создайте самоподписанный сертификат:

    Окно терминала
    sudo openssl req -new -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/admintest.key -out /etc/ssl/certs/admintest.crt

    В ходе исполнения команды потребуется последовательно ввести ряд параметров, запросы на которые отобразятся в командной строке. Наиболее важным параметром является Common Name, который должен соответствовать имени учётной записи, для которой будет осуществляться подключение.

    image-2025-11-18_19-28-57.png

  3. Запишите сертификат на токен.

    Соберите все необходимые объекты в зашифрованный контейнер:

    Окно терминала
    sudo openssl pkcs12 -export -in /etc/ssl/certs/admintest.crt -inkey /etc/ssl/private/admintest.key -name "admintest" -out user.pfx

    После этого необходимо открыть предустановленный Единый клиент JaCarta, перейти в расширенные настройки и ввести PIN-код:

    image-2025-11-18_19-29-12.png

    Импортируйте контейнер на токен:

    image-2025-11-18_19-29-21.png

    image-2025-11-18_19-29-30.png

    Укажите пароль для импортируемого файла:

    image-2025-11-18_19-29-38.png

    Контейнер, загруженный на токен:

    image-2025-11-18_19-29-46.png

  4. Сконвертируйте полученный ранее сертификат admintest в формат DER:

    Окно терминала
    openssl x509 -in admintest.crt -out admintest.cer -outform DER
  5. Извлеките публичный ключ из сертификата, выполнив команду в терминале с правами root:

    Окно терминала
    sudo openssl x509 -in admintest.cer -inform DER -noout -pubkey > pubkey.pub
  6. Сконвертируйте полученный публичный ключ в формат PKCS8:

    Окно терминала
    ssh-keygen -i -m PKCS8 -f pubkey.pub >> admintest.pub
  7. Передайте полученный ключ на удаленный ПК (сервер) любым удобным способом, например с помощью команды scp.

  1. Установите OpenSSH-server:

    Окно терминала
    sudo apt install openssh-server
  2. В конфигурационном файле /etc/ssh/sshd_config выполните настройку ssh-сервера.

    Откройте конфигурационный файл sshd_config, выполнив команду:

    Окно терминала
    vim /etc/ssh/sshd_config

    Для перенастройки расположения каталога поиска публичных ключей пользователя раскомментируйте и укажите в параметре AuthorizedKeysFile путь, по которому необходимо производить поиск публичных ключей, например, /etc/ssh/KEYS/%u.pub. Скопируйте полученный ранее публичный ключ в директорию /etc/ssh/KEYS, имя файла должно совпадать с именем пользователя ssh-соединения и иметь расширение .pub. Владелец файла должен соответствовать пользователю, для которого настраивалось ssh-соединение, и иметь права доступа 0600. Напомним, что текущее описание настраивается для пользователя admintest.

    Включите поддержку перенаправления X11, указав в параметре X11Forwarding значение yes.

    Для аутентификации по ЭП раскомментируйте параметр PubKeyAuthentication yes.

    После внесения изменений сохраните и закройте файл.

  3. Для применения изменений перезапустите демон ssh:

    Окно терминала
    sudo systemctl restart sshd

Для подключения к удалённому серверу по ssh с использованием ЭП выполните команду в терминале:

Окно терминала
ssh -I /lib/libjcPKCS11-2.so -X <username>@<server_address> 'command'

Где:

  • -I /lib/libjcPKCS11-2.so — путь к библиотеке libjcPKCS11-2.so;
  • -X — включение перенаправления X11, для поддержки запуска графических приложений. Следует учитывать, что поддержка перенаправления X11 должна быть включена на сервере с помощью параметра X11Forwarding yes;
  • <username>@<server_address> — имя пользователя и адрес сервера;
  • 'command' — опционально, команда, которая будет выполнена после подключения на удаленном сервере.