17.4. Аутентификация с использованием открытых ключей

Проблема

Требуется проводить аутентификацию сеансов SSH с применением ключей (вместо системных учётных записей). Это позволит вам использовать пароль SSH вместо данных учётной записи, что повышает уровень защиты этих данных. Кроме того, одна пара ключей (открытый и закрытый) может использоваться для произвольного количества удалённых хостов.

Решение

В следующем примере пользователь Valorie хочет подключиться с компьютера saturn к компьютеру jupiter. Для этого он должен сгенерировать новую, персональную пару ключей утилитой ssh_keygen, а затем передать копию своего нового открытого ключа на saturn.

valorie@jupiter:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/valorie/.ssh/id_rsa.
Your public key has been saved in /home/valorie/.ssh/id_rsa.pub.
The key fingerprint is:
79:lf:a5:5f:5f:17:e5:a8:bC:02:50:8c:3a:le:el:dl valorie@jupiter

Далее пользователь Valorie копирует новый ключ id_rsa.pub в свою учётную запись на компьютере saturn. Поскольку данные в файл authorized_keys на saturn заносятся впервые, для копирования можно воспользоваться командой scp:

valorie@jupiter:~$ scp ~/.ssh/id_rsa.pub valorie@saturn:.ssh/authorized_keys

Теперь при входе на saturn пользователю Valorie будет предложено ввести пароль закрытого ключа SSH:

valorie@jupiter:~$ ssh saturn
Enter passphrase for key 'home/valorie/.ssh/id_rsa':
Linux saturn 2.4.21 #1 Sun Aug 3 20:15:59 PDT 2003 i686 GNU/Linux
Libranet GNU/Linux
valorie@saturn:~$

Сеанс завершается командой exit.

Комментарий

OpenSSH использует ключи RSA и DSA. Оба вида ключей поддерживают SSH2, поэтому неважно, какой из них будет выбран. По умолчанию используются RSA.

Копирование ключа в файл authorized_keys на удалённом компьютере также может осуществляться простым копированием/вставкой. Откройте нормальный сеанс SSH:

$ ssh valorie@saturn
Password:

Затем запустите текстовый редактор на обоих концах подключения и выполните копирование/вставку.

Эта процедура подходит для любой учётной записи на доступном сервере SSH. Одной пары ключей должно быть достаточно; открытый ключ можно скопировать на любое количество хостов и использовать один и тот же пароль на всех хостах.

Следите за тем, с каким компьютером вы работаете! Легко ввести команду, полагая, что вы находитесь на локальном хосте, тогда как на самом деле вы подключены к удалённому компьютеру.

Защищайте ключи! Открытые ключи должны быть общедоступными для чтения, но запись в них должна разрешаться только владельцу (режим 644). Закрытые ключи должны быть недоступны для чтения/записи всем, кроме их владельца (режим 600). Никогда не передавайте закрытые ключи другим пользователям.

Помните, что некоторые текстовые редакторы автоматически создают резервные копии файлов. Либо отключите этот режим, либо немедленно удаляйте резервные копии ключей и других конфиденциальных файлов SSH.

См. также

ssh(1).