SSH авторизация по ключу

SSH авторизация по ключу

Работает и актуально как для никсов так и для маков (шелл терминал мака). Позволяет нам ходить по ssh на удаленные сервера без ввода паролей.

Обращаю ваше внимание на то, что в некоторых дистрибутивах линукс в домашней папке рута папки .ssh  может и не быть, в том числе файла с авторизационными данными ключей — в таком случае создайте его сами.

Создание пары ключей

Windows

На клиентской машине, откуда собираемся коннектиться к SSH серверу:

1. Скачиваем утилиты семейства Putty.

К примеру тут:

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

Нам потребуются следующие пакеты:

  • puttygen.exe — пакет для создания пары ключей
  • pageant.exe — утилита для «подгрузки» ключей — будет висеть в трее, и предоставлять приватный ключ к примеру для pscp или самого putty

еще по желанию (необходимости)

  • putty.exe — сама ssh-терминалка
  • pscp.exe — утилита копирования файлов по scp

2. Запускаем утилиту puttygen.exe, внизу выбираем SSH2, нажимаем Generate и водим мышкой в районе прогресс-бара для генерации случайной последовательности.

3. Сохраняем ключи. Save public key — сохранит публичный ключ. Также он будет виден в строке типа

ssh-rsa AAAAB3NzaC1yc...

— его даже проще от туда будет скопировать в текстовый файл.

Save privage key — сохранит приватный ключ. Этот ключ лучше сохранить в секрете (на внешнем носителе USB, зашифрованном томе и т.п.).

Так мы создали пару ключей, без passfrase (пароля, который будет требоваться при активации ключа). Если вам к ключу еще необходим и пароль, то его также можно указать.

Linux

На клиентской машине, откуда собираемся коннектиться к SSH серверу:

cd ~/.ssh
ssh-keygen -t rsa

На все вопросы отвечаем Enter-ом, тем самым создавая пару ключей, без passfrase (пароля, который будет требоваться при активации ключа). Если вам к ключу еще необходим и пароль, то его также можно указать в момент его запроса.

В итоге в директории .ssh появляются 2 файла:

id_rsa  - приватный ключ, держать в секрете! а лучше на зашифрованном томе
id_rsa.pub - публичный ключ, необходимо будет положить на сервер

На всю директорию .ssh ставим права — только чтение пользователю. Т.е.

chmod 700 ./.ssh
chmod 600 ./.ssh/id_rsa

Публичный ключ — на сервер

После создания пары ключей, приватный — остается у пользователя в секрете, а публичный необходимо положить в домашнюю директорию пользователя, в файл ~/.ssh/authorized_keys

На ssh сервере:

cat ./user.pub >> /home/user/.ssh/authorized_keys
chown -R user /home/user/.ssh
chmod 700 /home/user/.ssh/
chmod 600 /home/user/.ssh/authorized_keys

Также убедитесь что на сервере разрешена авторизация по ключу, для этого в файле /etc/ssh/sshd_config должны быть строки:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile     .ssh/authorized_keys

Если наш пользователь будет совсем без пароля, то для этого нужно в файле /etc/shadow заменить хеш пользовательского пароля на символ *. Пример (cat /etc/shadow) :

user:*:13783:0:99999:7:::

А если на сервере вообще хотим запретить авторизацию по паролям, выставляем параметр в /etc/ssh/sshd_config:

PasswordAuthentication no
PermitEmptyPasswords no

Проверка

Windows

На клиентской машине запускаем pageant.exe, щелкаем по иконке в трее, выбираем «Add key» — добавить ключ, добавляем приватный ключ.

Далее можно пробовать соединиться через putty.exe или pscp.exe — кому что надо. Достаточно будет указать только имя пользователя и адрес сервера, пароль спрашивать не должно, авторизация будет по ключу.

Linux

На клиентской машине запускаем:

ssh -v user@host

должно пропустить без запросов. Если что не так — смотрим на сервере лог /var/log/auth.log

 

About the Author:

Комментарии:

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