2 легких шага для настройки входа по SSH без пароля на Ubuntu

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

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

Шаг 1: Создайте ключевую пару открытого и закрытого ключей на вашем компьютере с установленной Ubuntu.

Откройте терминал на вашем рабочем столе Ubuntu (не на серверной версии) и введите следующую команду.

ssh-keygen - t rsa - b 4096

  • Флаг — t указывает тип. Приведённая команда создаёт ключевую пару типа RSA. Этот тип используется по умолчанию.
  • -флаг — b указывает количество бит. По умолчанию длина ключа составляет 3072 бита. Для повышения уровня безопасности мы применяем ключ длиной 4096 бит.

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

  • Приватный ключ, который используется для вашей аутентификации, будет сохранён в файле. ssh/id_rsa в вашем домашнем каталоге.
  • Файл. ssh/id_rsa. pub будет содержать сохранённый открытый ключ.

passwordless-ssh-login-ubuntu

На изображении randomart отображена длина ключа (RSA 4096). Теперь следует выполнить следующую команду.

file ~/.ssh/id_rsa

Вы должны получить следующий результат:

/home/username/.ssh/id_rsa: OpenSSH приватный ключ

Если вы столкнулись с ошибкой «Нет такого файла или директории», это указывает на то, что SSH-ключ отсутствует. Чтобы создать его заново, выполните команду ssh-keygen — t rsa — b 4096.

Шаг 2: Перенесите свой открытый ключ на удалённый сервер с операционной системой Linux.

Удалённый сервер способен функционировать на любом дистрибутиве Linux, таком как Debian, Ubuntu, RHEL, CentOS и прочие, при условии, что на нём установлен сервер OpenSSH. Вы можете применить следующий способ.

Читайте также:  Настройка корпоративного PROXY-сервера

Эта задача легко решается с помощью команды ssh-copy-id, входящей в состав пакета openssh-client.

ssh-copy-id remote-user@server-ip

Введите пароль для удалённого доступа.

Публичный ключ будет расположен в файле. ssh/authorized_keys в домашней папке пользователя на удалённом сервере. Теперь можно приступить к SSH-подключению к этому серверу.

ssh remote-user@server-ip

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

пароль для приватного ключа SSH

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

exit

Снова установите соединение с удаленным сервером через SSH:

ssh remote-user@server-ip

В этот раз вы сможете автоматически подключиться к удаленному серверу без необходимости ввода пароля или фразы-пароля для ключа. Также нет необходимости вводить эти данные при использовании команды scp для передачи файлов. Команда scp является частью пакета openssh-client, который обычно предустановлен на рабочем столе Ubuntu.

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

secret-tool store --label="Unlock password for: id_rsa" unique "ssh-store:/home/username/.ssh/id_rsa"

Деактивация входа с использованием пароля.

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

Для деактивации парольной аутентификации необходимо внести изменения в файл /etc/ssh/sshd_config на удалённом сервере.

sudo nano /etc/ssh/sshd_config

#PasswordAuthentication yes

PasswordAuthentication no

После этого найдите параметр ChallengeResponseAuthentication. Убедитесь, что его значение установлено на no, как указано ниже. Если же оно равно yes, вы все равно сможете входить, используя пароль.

ChallengeResponseAuthentication no

Сохраните документ и перезапустите службу SSH.

Читайте также:  Как записать звук на Ubuntu и других дистрибутивах Linux 2024?

Debian/Ubuntu

sudo systemctl restart ssh

RHEL/CentOS

sudo systemctl restart sshd

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

Permission denied (publickey).

Read: Connection reset by peer

Это подразумевает, что удаленный сервер допускает доступ по SSH исключительно с применением SSH-ключей и не позволяет вход с использованием пароля. Учтите, что если установить параметр PasswordAuthentication в значение no, а ChallengeResponseAuthentication в yes, вход с паролем все равно будет возможен. Для полной блокировки доступа по паролю необходимо установить оба этих параметра в значение no.

Создание резервной копии вашей пары ключей (публичного и приватного).

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

cp ~/.ssh/id_rsa* /path/to/safe/location/

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

Также есть возможность перенести пару ключей (как приватный, так и публичный) на новый компьютер с Linux и подключиться к своему серверу с помощью SSH-ключей. После копирования ключей на новый компьютер их следует поместить в каталог. ssh/ нового пользователя.

mv id_rsa* ~/.ssh/

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

sudo chown new-user:new-user ~/.ssh/id_rsa*

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

Порой мне хочется завести две учетные записи на своем локальном компьютере с Ubuntu для решения различных задач. Тем не менее, я хотел бы продолжать использовать SSH-ключ при входе в другую учетную запись. Для этого достаточно просто скопировать пару SSH-ключей (закрытый и открытый) в папку нового пользователя.~Вам потребуется ввести пароль вашего RSA-ключа для доступа к закрытому ключу в каталоге. ssh/. Если хотите, можете настроить автоматическую разблокировку при входе, чтобы избежать ввода пароля в дальнейшем.

Читайте также:  Проверка входящих писем на вирусы в Linux

ssh-private-key-passphrase-ubuntu-seahorse

Сохранение ключевой фразы в агенте SSH.

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

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

Настройте keychain на вашем клиентском компьютере SSH.

sudo apt install keychain

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

/usr/bin/keychain $HOME/.ssh/id_rsa source $HOME/.keychain/$HOSTNAME-sh

Выйдите из аккаунта и повторно авторизуйтесь. Вы получите сообщение подобного рода:

Последний вход: Чт Дек 17 20:38:39 2015 из 74.125.128.103 * keychain 2.7.1 ~Обнаружен активный ssh-agent с идентификатором 17651. Добавление одного ssh-ключа: /home//.ssh/id_rsa.Введите парольную фразу для /home//.ssh/id_rsa: * ssh-add: Идентификаторы добавлены: /home//.ssh/id_rsa

При запуске keychain осуществляется проверка на наличие активного ssh-agent; если его нет, то создаётся новый. Вам потребуется ввести ключевую фразу в этот раз. Она будет сохранена между сессиями пользователя, однако после перезагрузки системы её нужно будет ввести снова.

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

Модификация основной фразы закрытого ключа.

Если вам когда-либо потребуется изменить основную фразу вашего

Совет №2: Настройте автоматический запуск сессии Screen.

Внесите изменения в файл. bashrc.

nano ~/.bashrc

Вставьте данную строку в завершение этого документа.

if [ - z "$STY" ]; then screen - RR; fi

Сохраните файл и закройте его. В следующий раз, когда вы подключитесь к удалённому серверу по SSH, сессия Screen запустится автоматически.

Следующий этап.

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

  • Конфигурация автоматических обновлений безопасности (неподконтрольные обновления) в Ubuntu.

Для получения доступа к серверу Ubuntu по FTP можно установить сервер pure-FTPd.

  • Настройка безопасного FTP-сервера на базе Pure-FTPd в операционной системе Ubuntu.

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