OpenSSH Public Key Authentication

31.10.2009, рубрики: Новости | Теги: , | 1 комментарий »

opensshПривет. Сегодня поговорим о OpenSSH, а в частности об аутентификации на SSH сервере с использованием ключей. Метод Identity/Pubkey довольно популярный, прост в настройке и считается более безопасным, чем метод аутентификации по паролю. Целью использования идентификации Identity/Pubkey является исключение использования статических паролей, а использование ключей (метод открытого ключа). Метод заключается в следующем. В место того, чтобы каждый раз набирать пароль (который может быть перехвачен или подсмотрен) мы используем пару ключей, хранящихся на диске, которые и используются для проверки подлинности. Ваша учетная запись на сервере имеет список Identities/Pubkeys, которому можно доверять и если Вы сможете доказать, что у вас есть и публичный и приватный ключ, то доступ будет предоставлен без запроса пароля. Метод эффективен только если авторизация по паролям отключена.

Authentication

Вот некоторые из положительных моментов этого типа аутентификации:

  • Никто не сможет войти на сервер с Вашей учетной записью, так как им необходимо обладать приватным ключом и кодовой фразой.
  • Администратор сервера может вообще убрать пароль учетной записи, дабы исключить его дискредитацию.
  • Вы можете использовать утилиту ssh-agent и он будет предоставлять аутентификационные данные за Вас.
  • Вы можете устанавливать определенные ограничения, например запрещая перенаправление портов, выполнение определенных программ и т.д.
  • Вы можете распространять публичный ключ, без угрозы для вашей учетной записи.

В этой статье мы подробно рассмотрим данный метод.
Реализация данного метода графически:

ssh-client-server

Все операции необходимо выполнять от имени вашего пользователя. Использование root привилегий крайне не приветствуется.
Первое, что нам необходимо сделать, это проверить что OpenSSH установлен у вас в системе.

  1. $ ssh -V

Если да…то удалите его и все конфигурационные файлы. Сделать это можно следующим образом. Система -> Администрирование -> Менеджер пакетов Synaptic как показано на рисунке.

Снимок

Дабы убедиться в том, что все конфигурационные файлы были удалены, делаем так:

  1. $ sudo rm -rf /etc/ssh/
  1. $ sudo rm -rf ~/.ssh/

Теперь устанавливаем все пакеты заново.

  1. $ sudo aptitude install ssh openssh-client openssh-server

Системa на которых проводились тестирования:

  1. $ lsb_release -a
  2. Distributor ID: Ubuntu
  3. Description:    Ubuntu 9.10
  4. Release:    9.10
  5. Codename:   karmic

Все эти операции необходимо проделать как на Сервере так и на Клиенте.
Чем вызваны такие непонятные на первый взгляд операции? Ответ прост, не сделав этого, в конце, когда вы попытаетесь присоединиться к вашему серверу, с использованием ключей вы получите ошибку вида:
Permission denied (publickey,password,hostbased).

Теперь приступим непосредственно к созданию ключей, правкам конфигов и т.д.
Генерирование ключей выполняем только на стороне Клиента

  1. client$ mkdir ~/.ssh
  2. client$ chmod 700 ~/.ssh
  3. client$ ssh-keygen -q -f ~/.ssh/id_rsa -t rsa
  4. Enter passphrase (empty for no passphrase): …
  5. Enter same passphrase again: …

Не используйте пароль вашего аккаунта или пустой пароль, это может скомпрометировать безопасность. Пароль может быть до 16 символов. Далее необходимо выставить верные права для директории .ssh и ее содержимого:

  1. client$ chmod 700 ~/.ssh
  2. client$ chmod go-rwx ~/.ssh/*

Теперь вы обладатель двух ключей, которые находятся в папке .ssh:

  1. client$ ls -la .ssh/
  2. -rw-------  1 user user   1743 2009-10-31 15:38 id_rsa
  3. -rw-------  1 user user    397 2009-10-31 15:38 id_rsa.pub

id_rsa – приватный (секретный ключ)
id_rsa.pub – публичный ключ (можно выложить на ftp или samba)

Теперь необходимо скопировать ваш публичный ключ на сервер, перезаписать его в файл authorized_keys, и настроить конфиг сервера.
Копируем id_rsa.pub на сервер. (Для примера адрес сервера будет 192.168.1.1)

  1. client$ scp ~/.ssh/id_rsa.pub user@192.168.1.1:

Уберите файл id_rsa.pub из папки .ssh на съемный носитель или в зашифрованную директорию. Данное действие обязательно.

Все дальнейшие действия проводятся на стороне Сервера.

  1. server$ mkdir ~/.ssh
  2. server$ chmod 700 ~/.ssh
  3. server$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
  4. server$ chmod 600 ~/.ssh/authorized_keys
  5. server$ rm ~/id_rsa.pub

Пожалуй это все. Проверьте записался ли файл authorized_keys командой:

  1. cat authorized_keys

Теперь необходимо настроить конфиг сервера.

  1. server$ sudo nano /etc/ssh/sshd_config

Вот как должны выглядеть необходимые директивы в файле

  1. # Authentication:
  2. LoginGraceTime 120
  3. PermitRootLogin no
  4. StrictModes yes
  5.  
  6. RSAAuthentication yes
  7. PubkeyAuthentication yes
  8. AuthorizedKeysFile      %h/.ssh/authorized_keys
  9.  
  10. # To enable empty passwords, change to yes (NOT RECOMMENDED)
  11. PermitEmptyPasswords no
  12.  
  13. # Change to no to disable tunnelled clear text passwords
  14. PasswordAuthentication no

PermitRootLogin no – запретить авторизацию по руту
RSAAuthentication yes – разрешить RSA аутентификацию
PubkeyAuthentication yes – разрешить Pubkey аутентификацию
PermitEmptyPasswords no – запретить пустые пароли
PasswordAuthentication no – запретить аутентификацию по паролю

Выполняем подключение клиента к серверу

  1. client$ ssh -o PreferredAuthentications=publickey user@192.168.1.1
  2. Enter passphrase for key '/…/.ssh/id_rsa': …
  3. server$

В дальнейшем выполняем подключение к серверу командой:

  1. client$ ssh -v user@192.168.1.1

Помним, user – это учетная запись на сервере.

Если вы вдруг потеряли ваш публичный ключ, его можно восстановить следующим образом:

  1. client$ ls -1 /etc/ssh/ssh_host_rsa_key*
  2. client$ cat /etc/ssh/ssh_host_rsa_key.pub
  3. client$ ssh-keygen -y -f  /etc/ssh/ssh_host_rsa_key

Если вы потеряли ваш приватный ключ, то можете забыть о всякой аутентификации и создавать все ключи заново.

Можно еще более упростить процесс авторизации создав файл

  1. client$ nano .ssh/config

А в него добавить следующее:

  1. Host 192.168.1.1
  2. ServerAliveInterval 60
  3. User YourUserName
  4. Compression yes
  5. ForwardX11 yes
  6. IdentityFile ~/.ssh/id_rsa

Теперь что-бы попасть на сервер, достаточно ввести в командной строке.

  1. ssh 192.168.1.102

Полезные ресурсы:
Трюки, секреты SSH
OpenSSH
OpenSSH в Wikipedia


1 комментарий на запись “OpenSSH Public Key Authentication”

  1. 1 ManningWINNIE сказала в 2:32, 13.07.2011:

    It’s perfect that people can get the mortgage loans and that opens up new possibilities.


Оставить комментарий

  • Доступные теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code lang=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" extra="">

  • *