В этой инструкции приводится порядок действий по настройке доступа к удаленному серверу с помощью OpenSSH и Рутокена ЭЦП. Более подробно можно прочитать здесь: http://www.gooze.eu/howto/using-openssh-with-smartcards
Для работы с Рутокен будем использовать библиотеку librtpkcs11ecp.so.
Описание стенда: 2 виртуальные машины Ubuntu 12.10 x86 – сервер и клиент; Рутокен ЭЦП, отформатированный через Панель управления Рутокен.
Клиент:
1) Устанавливаем необходимые для работы с Рутокен пакеты:
$ sudo apt-get install opensc
2) Библиотеку librtpkcs11ecp.so помещаем в директорию /usr/lib/
3) Устанавливаем openssh-client:
$ sudo apt-get install openssh-client
Сервер:
4) На сервере устанавливаем openssh-server:
$ sudo apt-get install openssh-server
Клиент:
5) Генерируем ключевую пару на Рутокен:
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --keypairgen --key-type rsa:2048 -l --id 45
6) Теперь с помощью утилиты ssh-keygen конвертируем открытый ключ на Рутокен в формат ssh:
$ ssh-keygen -D /usr/lib/librtpkcs11ecp.so -I 0:45 >> key.pub
Здесь пара 0:45 - это <слот>:<id>.
7) Содержимое полученного файла key.pub копируем на сервер в файл ~/.ssh/authorized_keys (если такого файла нет, нужно его создать).
8) Подключаемся к серверу:
ssh -I /usr/lib/librtpkcs11ecp.so <username>@<server>
На этом все.
Если для работы с Рутокен используется библиотека opensc-pkcs11.so, порядок действий будет следующим:
1) Выполняем пункты 1, 3 и 4 из инструкции выше.
2) Форматируем Рутокен:
$ pkcs15-init --erase-card -p rutoken_ecp
$ pkcs15-init --create-pkcs15 --so-pin "87654321" --so-puk ""
$ pkcs15-init --store-pin --label "User PIN" --auth-id 02 --pin "12345678" --puk "" --so-pin "87654321" --finalize
3) Генерируем ключевую пару:
$ pkcs15-init -G rsa/2048
--auth-id
02 --id
42
4) Конвертируем открытый ключ в формат ssh:
$ pkcs15-tool –read-ssh-key 42
Здесь 42 – это id ключа.
5) Полученный результат копируем в файл ~/.ssh/authorized_keys на сервере
6) Подключаемся к серверу:
$ ssh -I /usr/lib/opensc-pkcs11.so <username>@<server>