SSH авторизация по ключу
Материал из Belgorod Linux User Group - Белгород.
Задача: авторизация на 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
Полезные ссылки:

