Как настроить SSH-ключи в CentOS 7

Введение

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

Хотя существует несколько разных способов входа на сервер SSH, в этом учебном модуле мы уделим основное внимание настройке ключей SSH. Ключи SSH обеспечивают простой, но при этом очень безопасный способ входа на сервер. Поэтому мы рекомендуем этот метод всем пользователям.

В этом руководстве объясняется, как генерировать ключи ssh в системах centos 7. мы также покажем вам, как настроить аутентификацию на основе ключей ssh и подключаться к удаленным серверам linux без ввода пароля.

Secure Shell (SSH) – это криптографический сетевой протокол, разработанный для безопасного соединения между клиентом и сервером.

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

Перед созданием новой пары ключей SSH рекомендуется проверить существующие ключи SSH на клиентском компьютере CentOS.

Для этого выполните следующую команду ls, в которой перечислены все открытые ключи, если они есть:

ls -l ~/.ssh/id_*.pub

Если выходные данные команды возвращают что-то вроде No such file or directory или no matches found это означает, что у вас нет ключей SSH на клиентском компьютере, и вы можете перейти к следующему шагу и сгенерировать пару ключей SSH.

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

Начните с создания новой пары ключей SSH 4096 бит с вашим адресом электронной почты в качестве комментария:

ssh-keygen -t rsa -b 4096 -C "your_email@domain.com"

Вам будет предложено указать имя файла:

Enter file in which to save the key (/home/yourusername/.ssh/id_rsa):

Нажмите, Enter чтобы принять местоположение файла по умолчанию и имя файла.

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

Enter passphrase (empty for no passphrase):

Если вы не хотите использовать фразу-пароль, просто нажмите Enter

Все взаимодействие выглядит так:

Как настроить SSH-ключи в CentOS 7

Чтобы убедиться, что ваша новая пара ключей SSH сгенерирована, введите:

ls ~/.ssh/id_*
/home/yourusername/.ssh/id_rsa /home/yourusername/.ssh/id_rsa.pub

Теперь, когда генерируется пара ключей SSH, следующим шагом является копирование открытого ключа на сервер, которым вы хотите управлять.

Самый простой и рекомендуемый способ скопировать открытый ключ на удаленный сервер – использовать утилиту под названием ssh-copy-id. На вашем локальном компьютере тип терминала:

ssh-copy-id remote_username@server_ip_address

Вам будет предложено ввести remote_usernameпароль:

remote_username@server_ip_address's password:

Введите пароль, и после аутентификации пользователя открытый ключ ~/.ssh/id_rsa.pub будет добавлен в ~/.ssh/authorized_keys файл удаленного пользователя . Соединение будет закрыто.

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'username@server_ip_address'"
and check to make sure that only the key(s) you wanted were added.

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

cat ~/.ssh/id_rsa.pub | ssh remote_username@server_ip_address "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

После выполнения описанных выше шагов вы сможете войти на удаленный сервер без запроса пароля.

Чтобы проверить это, попробуйте войти на свой сервер через SSH :

ssh remote_username@server_ip_address

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

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

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

Для отключения аутентификации по паролю SSH выполните следующие действия:

  1. Войдите в свой удаленный сервер:

    ssh sudo_user@server_ip_address
    
  2. Откройте файл конфигурации SSH /etc/ssh/sshd_config с помощью текстового редактора :

    sudo nano /etc/ssh/sshd_config
    
  3. Найдите следующие директивы и измените их следующим образом:

    / И т.д. / SSH / sshd_config

  4. Когда вы закончите, сохраните файл и перезапустите службу SSH, набрав:

    sudo systemctl restart ssh
    

На этом этапе аутентификация на основе пароля отключена.

Похожее:  Отвал авторизации gmail | Пикабу

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

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

По умолчанию SSH прослушивает порт 22. Изменение порта SSH по умолчанию снижает риск автоматических атак.

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

Config ssh

Чтобы не запоминать порты ко всем своим серверам, можно воспользоваться файлом ~.ssh/config. Создайте этот файл, если его нет на вашей локальной машине.

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

Войдите на ваш сервер, используя ssh ключи

После выполнения описанных выше шагов вы сможете войти на удаленный сервер без запроса пароля.

Чтобы проверить это, попробуйте войти на свой сервер через SSH :

Замена стандартного порта ssh

Эффективность: 🛡️ 🛡️

Один из самых простых способов защититься от неумелых атакующих и тупых ботов – это изменение дефолтного порта подключения по SSH. Большинство ботов сканируют только дефолтный порт, сменив его вы защититесь от ботов работающих на дурака.

Перед сменой порта разберитесь, какой firewall стоит на вашей системе. Например на CentOS 8 это скорее всего firewalld.

Вам необходимо открыть новый порт для ssh, и закрыть старый. Например, если у вас установлен firewalld, а порт вы выбрали 58291, то команды для открытия порта будут такие:

firewall-cmd --zone=public --add-port=57622/tcp --permanent
firewall-cmd --reload

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

sudo nano /etc/ssh/sshd_config

В открывшемся файле найдите следующую строку: #Port 22 Удалите решетку и измените номер порта, например на 58291. Номер не должен превышать 65535. Рекомендую выбрать пятизначное значение.

Как скопировать открытый ключ на ваш сервер

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

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

Копирование открытого ключа вручную

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

Содержимое файла id_rsa.pub нужно будет каким-то образом добавить в файл ~/.ssh/authorized_keys на удаленном компьютере.

Чтобы вывести содержимое ключа id_rsa.pub, введите на локальном компьютере следующую команду:

cat ~/.ssh/id_rsa.pub

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

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44 tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q bqgZ8SeeM8wzytsY dVGcBxF6N4JS zVk5eMcV385gG3Y6ON3EG112n6d SMXY0OEBIcO6x PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77 xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66 PujOO xt/2FWYepz6ZlN70bRly57Q06J ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv Ow9gI0x8GvaQ== demo@test

Откройте удаленный хост, используя любой доступный метод. Например, если вы используете дроплет DigitalOcean Droplet как сервер, вы можете выполнить вход, используя веб-консоль на панели управления:

Когда вы получите доступ к учетной записи на удаленном сервере, вам нужно будет убедиться, что каталог ~/.ssh создан. При необходимости эта команда создаст каталог, а если каталог уже существует, команда ничего не сделает:

mkdir -p ~/.ssh

Теперь вы можете создать или изменить файл authorized_keys в этом каталоге. Вы можете добавить содержимое файла id_rsa.pub в конец файла authorized_keys и, при необходимости, создать этот файл, используя следующую команду:

Копирование открытого ключа на сервер

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

Утилита ssh-copy-id

Копирование открытого ключа с использованием ssh-copy-id

Самый удобный способ скопировать открытый ключ на существующий сервер — использовать утилиту под названием ssh-copy-id. Поскольку этот метод очень простой, если он доступен, его рекомендуется использовать.

Инструмент ssh-copy-id входит в пакеты OpenSSH во многих дистрибутивах, так что, возможно, он уже установлен на вашей локальной системе. Чтобы этот метод сработал, вы должны уже настроить защищенный паролем доступ к серверу через SSH.

Похожее:  Мобильное Приложение «Хоум Кредит» — Скачать Бесплатно на Телефон: Android и iOS, Установить и Погасить Кредит

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

Синтаксис выглядит следующим образом:

Ограничить доступ пользователей по ssh

По умолчанию все пользователи системы могут войти в систему через SSH, используя свой пароль или открытый ключ.

Иногда вы создаете учетную запись пользователя UNIX Linux для FTP или электронной почты. Однако эти пользователи могут войти в систему с помощью ssh. У них будет полный доступ к системным инструментам, включая компиляторы и языки сценариев, такие как Perl, Python, которые могут открывать сетевые порты и делать много других нехороших вещей.

Чтобы разрешить доступ по ssh только нужным пользователям, добавьте следующее в sshd_config:

Отключение аутентификации по паролю

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

  1. На удаленном сервере запустите конфигурационный файл SSH через 
    sudo nano /etc/ssh/sshd_config.
  2. Отыщите параметр «PasswordAuthentication» и измените значение на no.
  3. Сохраните изменения и завершите работу в текстовом редакторе.
  4. Новый параметр вступит в силу только после перезагрузки сервиса 
    sudo systemctl restart sshd.service.

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

Отключение аутентификации с помощью пароля на сервере

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

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

Когда вышеуказанные условия будут выполнены, войдите на удаленный сервер с помощью ключей SSH с учетной записью root или с учетной записью с привилегиями sudo. Откройте файл конфигурации демона SSH:

sudo nano /etc/ssh/sshd_config

Редактирование конфигурационного файла

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

  1. Советуем использовать редактор nano, установить который в систему поможет команда
    sudo yum install nano.
    По завершении инсталляции запустите конфигурационный файл через
    sudo nano /etc/ssh/sshd_config.
  2. Вы будете ознакомлены со всеми доступными параметрами. Некоторые из них закомментированы, то есть перед параметром стоит знак #. Соответственно, убирая этот символ, вы раскомментируете параметр, и он будет действителен. Вы можете изменить стандартный порт, поменяв значение строки «Port» на любое другое. Кроме этого, рекомендуется установить второй протокол, используя «Protocol 2». Тогда повысится уровень безопасности.
  3. Эти и остальные параметры изменяются только по предпочтению администратора. Детальную информацию о каждом из них вы найдете в официальной документации SSH. По завершении редактирования сохраните изменения, нажав горячую клавишу Ctrl O.
  4. Выйти из редактора поможет комбинация Ctrl X.
  5. Перезапустите сервис, чтобы внесенные изменения вступили в силу.
    sudo service sshd restart
  6. Затем можете проверить статус SSH, чтобы убедиться в его работоспособности
    service sshd status.

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

Создание ключей ssh на centos

Перед созданием новой пары ключей SSH рекомендуется проверить существующие ключи SSH на клиентском компьютере CentOS.

Для этого выполните следующую команду ls, в которой перечислены все открытые ключи, если они есть:

ls -l ~/.ssh/id_*.pub

Если выходные данные команды возвращают что-то вроде No such file or directory или no matches found это означает, что у вас нет ключей SSH на клиентском компьютере, и вы можете перейти к следующему шагу и сгенерировать пару ключей SSH.

Похожее:  Банк Москвы: регистрация и вход в личный кабинет

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

Начните с создания новой пары ключей SSH 4096 бит с вашим адресом электронной почты в качестве комментария:

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

Криптографический алгоритм RSA (аббревиатура от фамилий Rivest, Shamir и Adleman) используется сервисом SSH для создания пары ключей. Такое действие позволить максимально обезопасить клиентскую и серверную часть при проведении соединений. Задействовать придется обе цепи, чтобы создать пару ключей.

  1. Для начала зайдите на клиентский компьютер и введите в консоли
    ssh-keygen.
  2. После активации появится новая строка, где будет предложено указать путь для сохранения ключа. Если хотите оставить расположение по умолчанию, не вводите ничего, а просто нажмите на клавишу Enter.
  3. Далее создается парольная фраза. Она обеспечит защищенность от несанкционированного входа в систему. После создания пароля его потребуется повторить.
  4. На этом процедура генерации завершена. На экране вы увидите сам ключ и случайное изображение, присвоенное ему.

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

Способ 1. копирование открытого ключа с помощью утилиты ssh-copy-id

Копирование открытого ключа через утилиту ssh-copy-id ― самый быстрый и удобный способ.

Готово, вы скопировали открытый ключ на сервер.

Способ 2. копирование открытого ключа с помощью ssh

Перед началом этих действий надо выполнить подключение по SSH обычным способом (через пароль) и произвести запуск удалённого соединения.

Готово, вы скопировали открытый ключ на сервер.

Установка компонентов и запуск сервера

Мы уже сказали, что SSH по умолчанию добавлен в список системных библиотек CentOS 7, но иногда по некоторым причинам необходимые компоненты отсутствуют на компьютере. В таком случае их потребуется добавить, а затем активировать работу сервера.

  1. Откройте «Терминал» и пропишите там команду 
sudo yum -y install openssh-server openssh-clients

2. Подтвердите подлинность учетной записи суперпользователя, введя пароль. Учтите, что вводимые таким образом символы не отображаются в строке.

3. Запустите проверку конфигурации командой 

sudo chkconfig sshd on

или

systemctl enabled sshd

4. Затем запустите сам сервис SSH, указав 

service sshd start

или

systemctl start sshd

5. Осталось только проверить, что задействованный по умолчанию порт открыт. Для этого используйте строку 

netstat -tulpn | grep :22

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

Этап 1. создание ключей

Для аутентификации на сервере нужно создать пару SSH-ключей — открытый и закрытый.

Готово, вы создали открытый и закрытый ключи. Теперь для входа в систему с помощью SSH-ключей нужно разместить открытый ключ на сервере и отключить аутентификацию (вход) по паролю.

Этап 2. копирование открытого ключа на сервер

Копировать ключ на сервер можно двумя способами:

Этап 3. отключение аутентификации по паролю

Готово, вы отключили вход по паролю.

Этап 4. аутентификация на сервере

Если всё настроено верно, включить SSH-подключение можно без пароля с помощью команды:

Где:

Готово, теперь вы можете открыть SSH без пароля.

🔐 используйте ssh ключ вместо пароля

Эффективность: 🛡️ 🛡️ 🛡️ 🛡️ 🛡️ 🛡️

Сервер OpenSSH поддерживает различную аутентификацию. Пароли можно угадывать, взламывать или подбирать методом перебора. Ключи SSH не подвержены таким атакам.

Когда вы генерируете ключи SSH, вы создаете пару ключей. Один из них – открытый ключ, другой – закрытый. Открытый ключ устанавливается на серверах, к которым вы хотите подключиться. Закрытый ключ, хранится в безопасности на вашем компьютере.

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

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

alt
Схематичный процесс авторизации по SSH ключу
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector