Доступ к линуксу по ключу

26.08.2017 Первое, что необходимо сделать с сервером, который находится в доступе из интернета - это побеспокоиться о его безопасности. Существует множество недоброжелателей, которые хотят воспользоваться вашими ресурсами в своих злостных целях. И инструментов для этого достаточно в интернете.

Давайте вместе попробуем реализовать самый простой способ повышения уровня безопасности - закрыть прямой доступ на сервер, а точнее к его консоли.

Но, собственно, что делать если доступ к серверу всё же нужен? Архитектурных сетевых решений бескрайнее множество. Мы рассмотрим один из самых простых.

Формулировка задачи: Обеспечить SSH-доступ к серверу на CentOS по ключу для пользователя root. Доступы по паролям запретить. Сервер находится в доступе по адресу по ip xx.xx.xx.xx


Приступим.

Шаг 1. Для того, чтобы сгенерировать эти самые ключи, необходимо авторизоваться на нашем сервере через ssh и попасть в консоль. Авторизоваться можно либо из консоли / терминала линукса (если вы сами работаете в линуксе), либо с помощью таких программ как Putty или Bitvise SSH Client.


Шаг 2. Следующим шагом необходимо перепроверить, что вы авторизовались именно под пользователем root - для него ж будем создавать ключи и отключать доступ по паролю.

Набираем в консоле команду who am i . Отобразится табличка. Если в 1й колонке в 3й строчке написано root, то всё в порядке.

 
Шаг 3. Генерируем ключи

а) набираем в консоле команду cd ~ . Это мы переходим в домашнюю директорию пользователя. Если вы уже тут, то можно команду пропустить.

б) набираем в консоле команду ssh-keygen -t dsa . Здесь генерируются ключ по методу dsa, есть ещё rsa и т.д. На все вопросы и ожидания ввода просто нажимаем Enter. Всё! Созданы 2 ключа, которые находятся в директории /root/.ssh . 

в) набираем в консоле команду touch .hushlogin . Создаётся файл /root/.hushlogin . В общем, он нужен.


Шаг 4. Разрешаем доступ по публичному ключу

набираем в консоле команду ssh-copy-id -i ~/.ssh/id_dsa.pub xx.xx.xx.xx , где xx.xx.xx.xx - это ip нашего сервера.


Шаг 5. Копируем файл /root/.ssh/id_dsa себе на компьютер

а) Для этого воспользуйтесь программой типа FileZilla или Bitvise SSH Client.
б) Зайдите на сервере в директорию /root/.ssh и скачайте файл id_dsa (не id_dsa.pub)

в) Если Вы Linux-пользователь: набираем в консоле команду cat id_dsa >> ~/.ssh/authorized_keys
г) Если Вы Windows-пользователь: вам необходимо воспользоваться программой PuttyGen для конвертации ключа в формат, который понимают большинство программ в Windows. Подробно описано как это сделать тут.


Шаг 5. Проверяем доступ по ключу из Linux

а) откройте новый терминал/консоль на своём локальном компьютере
б) набираем команду ssh root@xx.xx.xx.xx , где xx.xx.xx.xx - это ip сервера
в) если попросит ввести "yes/no" - вводим yes полностью
г) попадаем на сервер и тут же выходим из него командой exit
д) ещё раз набираем команду ssh root@xx.xx.xx.xx , где xx.xx.xx.xx - это ip сервера
е) должны попасть на сервер без вопросов


И так доступ по ключу для пользователя root готов. Далее отключаем доступы для всех пользователей по логину и паролю.

БУДТЕ ВНИМАТЕЛЬНЫ!!! Потеряв ключ - Вы не сможете его восстановить и потеряете доступ к серверу!!! Если ваш хостер предоставляет доступ к серверу по IP-KVM, то вы сможете зайти на сервер и вернуть все настройки.


Шаг 6. Отключаем ssh-доступы для всех пользователей по паролю

С этого момента делаете всё на свой риск!

а) заходим на сервер по ssh под пользователем root(консоль, терминал, putty, bitvise ssh client) .  Заодно ещё раз проверяем, что нас пускает с ключом и без пароля
б) открываем на редактирование конфигурационный файл демона ssh. В CentOS он находится /etc/ssh/sshd_config
в) находим строчки PermitEmptyPasswords и PasswordAuthentication, раскомментируем их и установим значение в no
г) сохраняем файл и выходим из редактирования


Шаг 7. Перезагрузка демона SSH. ОСТОРОЖНО!!!

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

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

а) удостоверились, что вы на сервере. Набираем команду service sshd restart 
б) выходим с сервера командой exit
в) выполняем авторизацию по ключу


Если всё делали правильно и перепроверяли себя на каждом шагу, то проблем быть не должно.


НЕ ЗАБЫВАЙТЕ, что 32 разрядные линуксы считают время до 19 января 2038 года 03:14:07 . То есть на 32 битных ОС ключ будет валидным до этого времени.
На 64 разрядных линуксах у вас в запасе более 240 миллиардов лет.


Надеемся, что данная статья окажется Вам полезной. 

Возврат к списку