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

Обновлено: 04.07.2024

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

Настройка SSH входа без пароля

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

/.ssh/authorized_keys удаленных хостов.

Следующие шаги описывают процесс настройки входа по SSH без пароля:

Проверьте существующую пару ключей SSH.

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

Выполните следующую команду ls, чтобы проверить наличие существующих ключей SSH:

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

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

Создайте новую пару ключей SSH.

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

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

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

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

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

Скопируйте открытый ключ

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

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

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

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

Войдите на свой сервер с помощью ключей SSH

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

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

Если все прошло успешно, вы сразу же войдете в систему.

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

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

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

В следующих руководствах описывается, как настроить доступ sudo:

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

Откройте файл конфигурации SSH /etc/ssh/sshd_config , найдите следующие директивы и измените их следующим образом:

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

На серверах Ubuntu или Debian выполните следующую команду:

На серверах CentOS или Fedora выполните следующую команду:

Выводы

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

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

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

SSH или Secure Shell - это зашифрованный протокол, который часто используется для взаимодействия и удаленного управления серверами. Если вы захотите что-либо сделать на удаленном сервере, скорее всего, вам придется воспользоваться SSH и работать через терминал.

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

Как работают ключи SSH?

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

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


Как создать ключи SSH?

Сначала необходимо создать ключи ssh для аутентификации на локальном сервере. Для этого существует специальная утилита ssh-keygen, которая входит в набор утилит OpenSSH. По умолчанию она создает пару 2048 битных RSA ключей, которая подойдет не только для SSH, но и для большинства других ситуаций.

И так, генерация ключей ssh выполняется командой:


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

/.ssh/. Лучше ничего не менять, чтобы все работало по умолчанию и ключи автоматически подхватывались. Секретный ключ будет называться id_rsa, а публичный id_rsa.pub.

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

  • Пароль никогда не попадет в сеть, он используется только на локальной машине для расшифровки ключа. Это значит что перебор по паролю больше невозможен.
  • Секретный ключ хранится в закрытом каталоге и у клиента ssh нет к нему доступа пока вы не введете пароль;
  • Если злоумышленник хочет взломать аутентификацию по ключу SSH, ему понадобится доступ к вашей системе. И даже тогда ключевая фраза может стать серьезной помехой на его пути.

Но все же, это необязательное дополнение и если не хотите, то вы можете просто нажать Enter. Тогда доступ по ключу ssh будет выполняться автоматически и вам не нужно будет что-либо вводить.

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

Загрузка ключа на сервер

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

Самый простой способ скопировать ключ на удаленный сервер - это использовать утилиту ssh-copy-id. Она тоже входит в пакет программ OpenSSH. Но для работы этого метода вам нужно иметь пароль доступа к серверу по SSH. Синтаксис команды:

При первом подключении к серверу система может его не распознать, поэтому вам нужно ввести yes. Затем введите ваш пароль пользователя на удаленном сервере. Утилита подключится к удаленному серверу, а затем использует содержимое ключа id.rsa.pub для загрузки его на сервер в файл

/.ssh/authorized_keys. Дальше вы можете выполнять аутентификацию с помощью этого ключа.

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

/.ssh, а затем поместим наш ключ в файл authorized_keys с помощью символа >>, это позволит не перезаписывать существующие ключи:

/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p

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

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

Отключение проверки пароля

sudo vi /etc/ssh/sshd_config

Теперь сохраните файл и перезапустите службу ssh:

sudo service ssh restart

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

Выводы

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

Favorite

Добавить в избранное

Главное меню » Linux » Как отключить вход по SSH с паролем

Как настроить SSH ключи в Debian 10

О дним из основных шагов по усилению SSH является отключение входа по SSH на основе пароля.

Вы знаете, что вы можете использовать ssh с паролем root или другой учетной записи для удаленного входа на сервер Linux.

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

Вы мне не верите? Вы можете проверить логин на вашем сервере Linux. Вы будете удивлены, увидев так много неудачных попыток на вашем сервере.

Таким образом, только те системы, чьи открытые ssh-ключи добавлены на сервер (так называемая аутентификация на основе ключей), смогут подключаться к серверу. Читайте о настройке конфигурации SSH.

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

Прежде чем сделать это, вы должны помнить следующее:

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

Некоторые поставщики облачных серверов предоставляют VNC-консоль, которая может вам помочь.

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

Ладно. Итак, теперь вы знаете риски, связанные с отключением входа по SSH с помощью пароля. Посмотрим, как это сделать.

Читать Как узнать, какую версию Linux вы используете

Войдите в систему как root на ваш сервер Linux, используя аутентификацию на основе ключей. Используйте редактор, такой как Nano или Vim, для редактирования следующего файла:

Найдите следующую строку:

И измените его на:

Сохраните файл после внесения этих изменений и перезапустите службу SSH с помощью этой команды:

Вот и все. Вы успешно отключили аутентификацию на основе пароля в SSH.

Вопросы и предложения всегда приветствуются.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Базовая защита от взлома вашего linux сервера. Запрет входа для root пользователя, смена стандартного порта и другие способы защиты.

Гайд по защите Linux сервера от взлома

Каюсь, давным-давно я был молод и силен входил на сервер с помощью root пользователя. Времена меняются, паранойя растет, так что разберемся как не дать школьнику доступ к нашему серверу.

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

Как только все заработает, вы можете безопасно закрывать любые сеансы.

Cтатья не является “рецептом”, в котором надо выполнить все пункты. Некоторые пункты не нужны, если вы выполнили другие. Поэтому выберете только необходимые вам. Я же придерживаюсь следующего рецепта.

Устанавливайте обновления

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

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

Для CentOS команда на обновление выглядит так

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

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

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

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

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

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

После этого необходимо перезапустить службу ssh:

Для входа с использованием нового порта используйте следующий флаг:

Config SSH

Чтобы не запоминать порты ко всем своим серверам, можно воспользоваться файлом

.ssh/config . Создайте этот файл, если его нет на вашей локальной машине.


Пример .ssh/config

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

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

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

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

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


Схематичный процесс авторизации по SSH ключу

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

И так, генерация ключей ssh выполняется командой:

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

/.ssh/. Лучше ничего не менять, чтобы все работало по умолчанию и ключи автоматически подхватывались. Секретный ключ будет называться id_rsa, а публичный id_rsa.pub.

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

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

Никогда и никому не передавайте свой закрытый ключ.

Загрузка ключа на сервер

Самый простой способ скопировать ключ на удаленный сервер - это использовать утилиту ssh-copy-id . Она входит в пакет программ OpenSSH. Но для работы этого метода вам нужно иметь пароль доступа к серверу по SSH.

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

При первом подключении к серверу система может его не распознать, поэтому вам нужно ввести yes. Затем введите ваш пароль пользователя на удаленном сервере. Утилита подключится к удаленному серверу, а затем использует содержимое ключа id_rsa.pub для загрузки его на сервер в файл

/.ssh/authorizedkeys. Дальше вы можете выполнять аутентификацию с помощью этого ключа.

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

/.ssh , а затем поместим наш ключ в файл authorized_keys с помощью символа >> , это позволит не перезаписывать существующие ключи:

Здесь вам тоже нужно набрать yes, если вы подключаетесь к новому серверу, а затем ввести пароль.

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

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

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

🙅‍♂️ Запрет авторизации по паролю

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

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

Прежде чем запрещать вход по паролю, проверьте возможность входа по ssh ключу.

Нам нужно отредактировать ваш файл конфигурации SSH.

Находим строчку PasswordAuthentication yes и меняем ее на PasswordAuthentication no .

Теперь сохраните файл и перезапустите службу ssh:

Создание нового пользователя

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

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

Root«Root» — это учётная запись, которая имеет доступ ко всем без исключения действиям. Да, вообще ко всем.

Более того, вы не должны позволять root входить в ваш SSH-сервер. Подключение должно быть разрешено только обычным пользователям. Если им нужно выполнить административную задачу, им также следует использовать sudo.

Добавим нового пользователя, на замену root.

Если вас не попросили придумать пароль для пользователя, то установите его вручную.

Я предполагаю, что мы заблокируем root пользователя, поэтому после этого добавим пользователя в группу sudo:

На некоторых ОС эта гурппа называется wheel.

Для каждого пользователя sudo можно задать ограничения: разрешить запускать только определенные команды от имени супер пользователя.

🙅‍♂️ Запрет доступа root на сервер

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

Самый лучший вариант – это когда у root пользователя нет возможности войти на сервер.

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

Открываем текстовый файл в любом редакторе:

Нас интересует параметр PermitRootLogin :

  • Если вы хотите вообще запретить пользователю root вход в систему, установите PermitRootLogin no .
  • Если вы собираетесь разрешить пользователю root входить в систему, но хотите использовать только SSH-ключи, установите PermitRootLogin prohibit-password .

После внесения вышеуказанных изменений сохраните и закройте файл. Затем перезапустите службу SSH, чтобы внесенные изменения вступили в силу.

Читайте также: