Как добавить ключи SSH в Ubuntu 20.04

Как добавить ключи SSH в Ubuntu 20.04

Настройте безопасный вход без пароля на удаленный сервер Ubuntu с помощью ключей SSH

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

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

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

В этом руководстве мы увидим, как настроить ключи SSH на сервере Ubuntu 20.04 LTS.

Проверьте, есть ли на вашем компьютере какой-либо существующий ключ SSH

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

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

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

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

Создание ключей SSH на клиентском компьютере

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

ssh-keygen

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

ssh-keygen -b 4096

Если команда выполняется успешно, на вашем экране появится следующее сообщение.

создание пары ключей открытого и закрытого типа RSA.
Введите файл, в котором нужно сохранить ключ (/home/harshit/.ssh/id_rsa):

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

Введите файл, в котором нужно сохранить ключ (/home/your_name/.ssh/id_rsa): /home/your_name/.ssh/id_rsa_xxx

Замените xxxв конце имени файла подходящее имя, как показано ниже, и нажмите Enter.

Введите файл, в котором нужно сохранить ключ (/home/your_name/.ssh/id_rsa): /home/your_name/.ssh/id_rsa_client_1

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

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

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

Когда весь процесс будет завершен, на вашем экране появится следующее сообщение.

Как добавить ключи SSH в Ubuntu 20.04

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

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

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

Использование утилиты ssh-copy-id

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

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

ssh-copy-id [email protected]

Замените usernameи hostnameв приведенной выше команде на имя пользователя и имя хоста вашего сервера.

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

Подлинность хоста 172.105.XX.XX (172.105.XX.XX) не может быть установлена.
Отпечаток ключа ECDSA: xx: xx: xx: xx: 77: fe: 73: xx: xx: 55: 00: ad: d6: xx: xx: xx.
Вы уверены, что хотите продолжить подключение (да / нет)? да

Теперь ssh-copy-idутилита просканирует файл с именем, id_rsa.pubсодержащим открытый SSH-ключ. После завершения процесса сканирования вам будет предложено ввести пароль вашего удаленного сервера, как показано ниже. Введите пароль и нажмите Enter.

/ usr / bin / ssh-copy-id: INFO: попытка входа в систему с новым ключом (ключами), чтобы отфильтровать уже установленные
/ usr / bin / ssh-copy-id: ИНФОРМАЦИЯ: осталось установить 1 ключ (и) - если вам будет предложено сейчас установить новые ключи
Пароль [защищенный адрес электронной почты] :

После добавления ключа на вашем терминале появится следующее сообщение в качестве вывода.

Количество добавленных ключей: 1
Теперь попробуйте войти в систему с помощью: «ssh ' [email protected] '» и убедитесь, что добавлены только те ключи, которые вам нужны.

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

ssh-copy-id -i id_rsa_xxx.pub [email protected]

💡 Совет

Не забудьте указать .pub в конце имени файла при вводе текста в терминале.

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

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

cat ~/.ssh/id_rsa.pub | ssh [email protected]_ip_address "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

Замените remote_usernameи server_ip_addressсвоим именем пользователя и IP-адресом.

Если на вашем компьютере доступно несколько ключей SSH, замените их id_rsa.pubоткрытым файлом ключей SSH по вашему выбору. Например, id_rsa_client_1.pub.

При появлении запроса введите пароль удаленного пользователя и нажмите Enter.

[email protected]'s password:

После ввода пароля id_rsa.pubфайл будет скопирован в authorized_keysфайл удаленного сервера.

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

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

Откройте id_rsa.pubфайл с помощью catкоманды в терминале. Вы также можете открыть его из текстового редактора, цель - просто скопировать содержимое файла.

cat ~/.ssh/id_rsa.pub

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

SSH-RSA AAAAB3NzaC1yc2EAAAADAQABAAABAQComjFtuHvHQ67uf3RXg2wgK4EtxBvBvLCtlc4chG + nJ1cbuJjJ6G8az4xsRN1Q7hrV4dYR81Tk3gRApiMdGcMvInU3Vb7Wq3nh9GS4xnLRH1wvb149wogum2MycIES69Xh0cib + VvJyZ + dGO8zRNT64 + SvfiecRV0llnBGWDRqrIGtMHJkKz7VDKuSyzDit / Ck1NFXxC6Plw3cEMOhWHycm8bnSHSoVpr95ySxxnokX4 / 9iAlvOovxTpMpmDaDvuHKgHxcsOv9Q4sz // 6Hy / 65 + qqmiuLyuIQXjDiiYTjHTx + VNi6S0iMLoN6XgDLp0MfG6kLvZ0Z + csqdvIDQfMuH [электронная почта защищена] _PC

Теперь войдите на свой удаленный сервер и вставьте скопированный контент, используя команду, показанную ниже. Замените above_stringскопированным содержимым.

echo above_string >> ~/.ssh/authorized_keys

Настройка нескольких ключей SSH (необязательно)

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

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

cd ~/.ssh
vim config

Введите iдля входа в командный режим и введите сведения о нескольких хостах, как показано в следующем примере:

Host remote-ubuntu-server
HostName 172.105.XX.XX
User root
IdentityFile ~/.ssh/id_rsa_client_1

Host remote-ubuntu-server
HostName 172.106.XX.XX
User root
IdentityFile ~/.ssh/id_rsa_client_2

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

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

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

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

ssh [email protected]_ip_address

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

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

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

Отключить механизм входа на основе пароля

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

Войдите на свой удаленный сервер Ubuntu и введите команду, показанную ниже.

sudo vim /etc/ssh/sshd_config
  • Нажмите Esc, /введите «Проверка подлинности пароля» и нажмите enter
  • Теперь нажмите iи измените значение «PasswordAuthentication yes» на «PasswordAuthentication no».
  • Нажмите Escи повторите описанный выше процесс, чтобы найти «ChallengeResponseAuthentication», «UsePAM» и также измените их значения на no.
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no

Как только все значения будут установлены на no, нажмите Esc, введите :wqи нажмите enter.

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

sudo systemctl restart ssh

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

После завершения процесса проверки закройте все запущенные сеансы.

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


Как включить SSH в Ubuntu 20.04

Как включить SSH в Ubuntu 20.04

Безопасный доступ к вашей машине Ubuntu из любого места

Как настроить сервер и клиент WireGuard VPN в Ubuntu 20.04

Как настроить сервер и клиент WireGuard VPN в Ubuntu 20.04

Настройте собственный VPN с помощью Wireguard

Как установить Git на Ubuntu 20.04 LTS

Как установить Git на Ubuntu 20.04 LTS

Одна из первых вещей, которые вы должны установить на свой Linux-компьютер

Как использовать команду SCP в Linux

Как использовать команду SCP в Linux

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

Как создать пользователя Sudo в Ubuntu 20.04 LTS

Как создать пользователя Sudo в Ubuntu 20.04 LTS

Предоставьте root-права любому пользователю с sudo в Ubuntu 20.04 LTS

Как добавить ключи SSH в Ubuntu 20.04

Как добавить ключи SSH в Ubuntu 20.04

В этой статье объясняется процесс добавления аутентификации ключей SSH на сервер Ubuntu 20.04 и отключения аутентификации на основе пароля.

Как запустить тесты скорости из командной строки Linux с помощью Speedtest-cli

Как запустить тесты скорости из командной строки Linux с помощью Speedtest-cli

Speedtest.net - это сервис для проверки скорости вашего интернет-соединения. Он использует ближайший сервер speedtest.net для загрузки

Лучший бесплатный видеоредактор для Ubuntu в 2020 году

Лучший бесплатный видеоредактор для Ubuntu в 2020 году

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

7 лучших приложений для динамических обоев Ubuntu

7 лучших приложений для динамических обоев Ubuntu

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

Как установить TensorFlow на CentOS

Как установить TensorFlow на CentOS

Установите TensorFlow с помощью Python (pip) или контейнера Docker