ГлавнаяОперационные системыLinuxКак включить вход по SSH без пароля в Linux

Как включить вход по SSH без пароля в Linux

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

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

Если вы используете устройства Linux дома, у вас есть дополнительное преимущество — удобство. Предположим, вы хотите выполнить настроить SSH X-пересылку с рабочей станции Linux на ноутбук. Вы действительнохотите вводить свой пароль каждый раз, когда запускаете удаленную программу? Настройте ключи SSH, и вам это не понадобится.

Установить пакеты

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

Метапакет OpenSSH не устанавливается по умолчанию ни в системах Debian, ни в Ubuntu. Если он у вас еще не установлен, вы можете сделать это, выполнив следующую команду:

sudo apt install ssh
Ssh без пароля Linux 02 Установка Openssh

Сгенерируйте свой SSH-ключ в Linux

В Linux получить

Contents

Установить пакеты

е свой SSH-ключ действительно легко. Просто сообщите OpenSSH, что вам нужно сгенерировать ключ. Также рекомендуется указать количество битов с помощью флага -bи тип с помощью -t. Лучше всего использовать ключ длиной 4096 бит, поскольку он обеспечивает более надежное шифрование.

ssh-keygen -t ed25519

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

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

Отправка ключа на удаленный хост Linux

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

ssh-copy-id -i ~/.ssh/id_ed25519.pub username@ip_remote_host

Замените ip_remote_hostфактическим IP-адресом удаленного хоста, которым вы будете управлять через SSH. Замените usernameфактическим именем пользователя на удаленном хосте.

Ssh без пароля Linux 04 Идентификатор копирования Ssh

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

Ssh без пароля Linux 05, успешное копирование

Проверка SSH-соединения в Linux

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

Войдите в систему с помощью следующей команды:

ssh username@ip_remote_host

Удаленный хост войдет в систему, не запрашивая пароль учетной записи пользователя.

Ssh без пароля Linux 06 Вход без пароля

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

Ssh без пароля Linux 07 Не удалось войти в систему

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

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

Отправка ключа на удаленный хост Linux

async" src="https://saintist.ru/wp-content/uploads/2024/05/ssh-passwordless-linux-08-two-factor-sample.png" alt="Ssh Passwordless Linux 08 Двухфакторный образец">

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

Вы можете найти файл конфигурации для вашего демона SSH в «/etc/ssh/sshd_config». Откройте файл на сервере используя sudo и в предпочитаемом вами текстовом редакторе. Например, откройте этот файл с помощью nano, выполнив следующую команду:

sudo nano /etc/ssh/sshd_config

Найдите строки ниже, нажав Ctrl+ W, и отредактируйте их так, как показано в примере. Раскомментируйте обе записи и измените значения на no.

PasswordAuthentication no
PermitEmptyPasswords no
Ssh без пароля Linux 09 Найти опцию Nano

PasswordAuthenticationуказывает, следует ли использовать аутентификацию по паролю. Мы установили для этого параметра значение «нет», поскольку хотим использовать только ключи SSH.

PermitEmptyPasswordsуказывает, разрешает ли сервер вход в систему с пустым паролем. Никогда не следует этого разрешать, поэтому мы установили значение «нет».

Проверка SSH-соединения в Linuxwp-content/uploads/2024/05/ssh-passwordless-linux-10-update-sshd-settings.png" alt="Ssh Passwordless Linux 10 Обновите настройки Sshd">

Далее найдите строку «UsePAM» и измените ее на «нет». Это не позволит демону использовать какие-либо методы аутентификации (пароль, Kerberos и т. д.), кроме ключей SSH.

UsePAM no
Ssh Passwordless Linux 11 Отключить поддержку Pam<

Сохраните файл, нажав Ctrl+ O, затем Ctrl+ Xи перезагрузите SSH-сервер.

sudo systemctl restart ssh

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

Ssh без пароля Linux 12 Вход без ключа<

Часто задаваемые вопросы

Я получаю сообщение «Соединение отклонено», когда я отправляю свой SSH-ключ на свой Linux-сервер. Как это исправить?

Убедитесь, что на удаленном хосте работает SSH-сервер. Вы м

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

emctl status ssh. Если служба не запущена, ее можно запустить с помощью этой команды: sudo systemctl start ssh.

Если на сервере работает брандмауэр, убедитесь, что порт 22 открыт. Вы можете сделать это, запустив sudo ufw status. Если SSH нет в списке, вы можете включить его, выполнив следующую команду: sudo ufw allow ssh.

При попытке войти в систему я получаю сообщение об ошибке «Отказано в доступе (открытый ключ)». Что мне делать?

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

При попытке подключения я получаю сообщение об ошибке «Проверка ключа хоста не удалась». Как это исправить?

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

Можно ли использовать несколько ключей SSH на одном удаленном сервере Linux?

Да. Вы можете использовать опцию -fв OpenSSH, чтобы указать точный ключ, который вы хотите использовать для подключения к удаленному серверу. Например, запуск ssh -f ~/.ssh/id_rsa_2 username@remote_ip_addressподключит вас к удаленному серверу с использованием ключа «id_rsa_2» вместо «id_rsa» по умолчанию.

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

Я получаю сообщение об ошибке «Отказано в доступе» каждый раз, когда пытаюсь скопировать ключ SSH на свой сервер.

Эта проблема, скорее всего, связана с проблемой разрешений на вашем удаленном сервере. В большинстве случаев утилита ssh-copy-idдолжна должным образом решить любые проблемы с доступом сразу после подключения к удаленному серверу. Однако бывают случаи, когда эта функция не работает и не может правильно скопировать «id_rsa» вашего локального компьютера.

Чтобы это исправить, войдите на удаленный сервер и запустите chmod 700 /home/$USER/.ssh/* && chmod 600 /home/$USER/.ssh. Это установит правильные биты разрешений как для папки «.ssh», так и для ее содержимого.

Изображение предоставлено: Unsplash . Все изменения и скриншоты Рамсеса Реда.

Часто задаваемые вопросы

Я получаю сообщение «Соединение отклонено», когда я отправляю свой SSH-ключ на свой Linux-сервер. Как это исправить?

При попытке войти в систему я получаю сообщение об ошибке «Отказано в доступе (открытый ключ)». Что мне делать?

При попытке подключения я получаю сообщение об ошибке «Проверка ключа хоста не удалась». Как это исправить?

Можно ли использовать несколько ключей SSH на одном удаленном сервере Linux?

Я получаю сообщение об ошибке «Отказано в доступе» каждый раз, когда пытаюсь скопировать ключ SSH на свой сервер.

ПОХОЖИЕ СТАТЬИ

Популярные записи