Table of Contents | ||||
---|---|---|---|---|
|
Введение
В этой инструкции приводится порядок действий по настройке доступа к удаленному серверу с помощью OpenSSH и Рутокена ЭЦП. Более подробно можно прочитать здесь: http://www.gooze.eu/howto/using-openssh-with-smartcards
Для работы с Рутокен будем использовать библиотеку librtpkcs11ecp.so
, также возможно использование библиотеки opensc-pkcs11.so.
Стенд
2 виртуальные машины Ubuntu 12.10 x86 – сервер и клиент; Рутокен ЭЦП, отформатированный через Панель управления Рутокен.
Общий порядок действий для библиотеки librtpkcs11ecp.so
1. Клиент
1.1 Устанавливаем необходимые для работы с Рутокен пакеты:
Code Block | ||
---|---|---|
| ||
$ sudo apt-get install opensc |
1.2 Библиотеку librtpkcs11ecp.so
помещаем в директорию /usr/lib/
1.3 Устанавливаем openssh-client:
Code Block | ||
---|---|---|
| ||
$ sudo apt-get install openssh-client |
2. Сервер
2.1 На сервере устанавливаем openssh-server:
Code Block | ||
---|---|---|
| ||
$ sudo apt-get install openssh-server |
3. Клиент
3.1 Генерируем ключевую пару на Рутокен:
Code Block | ||
---|---|---|
| ||
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --keypairgen --key-type rsa:2048 -l --id 45 |
3.2 Теперь с помощью утилиты ssh-keygen
конвертируем открытый ключ на Рутокен в формат ssh:
Code Block | ||
---|---|---|
| ||
$ ssh-keygen -D /usr/lib/librtpkcs11ecp.so -I 0:45 >> key.pub |
Здесь пара 0:45 - это <слот>:<id>.
3.3 Содержимое полученного файла key.pub
копируем на сервер в файл ~/.ssh/authorized_keys
(если такого файла нет, нужно его создать).
3.4 Подключаемся к серверу:
Code Block | ||
---|---|---|
| ||
ssh -I /usr/lib/librtpkcs11ecp.so <username>@<server> |
3.5 На этом все.
Общий порядок действий для библиотеки opensc-pkcs11.so
Если для работы с Рутокен используется библиотека opensc-pkcs11.so, порядок действий будет следующим.
1. Клиент
1.1 Устанавливаем необходимые для работы с Рутокен пакеты:
Code Block | ||
---|---|---|
| ||
$ sudo apt-get install opensc |
1.2 Устанавливаем openssh-client:
Code Block | ||
---|---|---|
| ||
$ sudo apt-get install openssh-client |
2. Сервер
2.1 На сервере устанавливаем openssh-server:
Code Block | ||
---|---|---|
| ||
$ sudo apt-get install openssh-server |
2.2 Форматируем Рутокен:
Code Block | ||
---|---|---|
| ||
$ 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 |
2.3 Генерируем ключевую пару:
Code Block | ||
---|---|---|
| ||
$ pkcs15-init -G rsa/2048 --auth-id 02 --id 42 |
2.4 Конвертируем открытый ключ в формат ssh:
Code Block | ||
---|---|---|
| ||
$ pkcs15-tool -read-ssh-key 42 |
Здесь 42 – это id ключа.
2.5 Полученный результат копируем в файл ~/.ssh/authorized_keys
на сервере
3. Клиент
3.1 Подключаемся к серверу:
Code Block | ||
---|---|---|
| ||
$ ssh -I /usr/lib/opensc-pkcs11.so <username>@<server> |