Как установить ключи SSH в Ubuntu 20.04
Как установить ключи SSH в Ubuntu 20.04

Как установить ключи SSH в Ubuntu 20.04

0 Акции
0
0
0
0

Как установить ключи SSH в Ubuntu 20.04

Введение

SSH (Secure Shell) — это шифрованный протокол, используемый для управления серверами и взаимодействия с ними. При работе с сервером Ubuntu вы, вероятно, будете проводить большую часть времени в терминальном сеансе, подключенном к серверу по SSH. Следите за новостями, чтобы узнать, как установить SSH-ключи в Ubuntu 20.04.

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

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

Шаг 1 — Создайте пару ключей

Первый шаг — создание пары ключей на клиентском устройстве (обычно на компьютере):

$ ssh-keygen

По умолчанию последние версии ssh-keygen генерируют пару ключей RSA длиной 3072 бита, что достаточно безопасно для большинства целей (при желании можно передать флаг -b 4096, чтобы сгенерировать более длинный 4096-битный ключ).

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

Output
Generating public/private rsa key pair.
Enter file in which to save the key (/your_home/.ssh/id_rsa):

Нажмите Enter, чтобы сохранить пару ключей в подкаталоге /ssh. вашего домашнего каталога, или укажите альтернативный путь.

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

Output
/home/your_home/.ssh/id_rsa already exists.
Overwrite (y/n)?

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

После этого вы должны увидеть следующее уведомление:

Output
Enter passphrase (empty for no passphrase):

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

После этого вы должны увидеть вывод, подобный следующему:

OutputYour identification has been saved in /your_home/.ssh/id_rsa
Your public key has been saved in /your_home/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:/hk7MJ5n5aiqdfTVUZr+2Qt+qCiS7BIm5Iv0dxrc3ks user@host
The key's randomart image is:
+---[RSA 3072]----+
|                .|
|               + |
|              +  |
| .           o . |
|o       S   . o  |
| + o. .oo. ..  .o|
|o = oooooEo+ ...o|
|.. o *o+=.*+o....|
|    =+=ooB=o.... |
+----[SHA256]-----+

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

Шаг 2 — Скопируйте открытый ключ на сервер Ubuntu

Самый быстрый способ скопировать открытый ключ на хосте Ubuntu — использовать инструмент ssh-copy-id. Благодаря своей простоте этот метод настоятельно рекомендуется использовать, если он доступен. Если на вашем клиентском компьютере нет ssh-copy-id, вы можете воспользоваться одним из двух альтернативных методов, описанных в этом разделе (копирование через SSH с паролем или ручное копирование ключа).

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

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

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

Так:

$ ssh-copy-id username@remote_host

Вы можете увидеть следующее сообщение:

Output
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

Это означает, что ваш локальный компьютер не распознаёт удалённый хост. Вы подключаетесь к новому хосту впервые. Введите “yes” и нажмите ENTER, чтобы продолжить.

Затем инструмент просканирует вашу локальную учётную запись на наличие созданного нами ранее ключа id_rsa.pub. Найдя ключ, он запросит пароль удалённой учётной записи:

Output
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password:

Введите пароль (вводимые данные не будут отображаться в целях безопасности) и нажмите клавишу ENTER. Инструмент подключится к учётной записи на удалённом хосте, используя указанный вами пароль. Затем он скопирует содержимое вашего ключа ssh/id_rsa.pub./~ в файл с именем author_keys в домашнем каталоге ssh./~ удалённой учётной записи.

Вы должны увидеть следующий вывод:

Output
Number of key(s) added: 1

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

На этом этапе ваш ключ id_rsa.pub загружен в удалённую учётную запись. Вы можете перейти к шагу 3.

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

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

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

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

Затем мы можем вывести введённое нами содержимое в файл author_keys в этом каталоге. Мы будем использовать символ перенаправления <<, чтобы добавить содержимое, а не перезаписывать его. Это позволяет добавлять ключи, не удаляя ранее добавленные.

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

$ cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

Вы можете увидеть следующее сообщение:

Output
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

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

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

Output
[email protected]'s password:

После ввода пароля содержимое вашего ключа id_rsa.pub будет скопировано в конец файла author_keys удалённой учётной записи. В случае успеха перейдите к шагу 3.

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

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

Мы вручную добавляем содержимое вашего файла id_rsa.pub в файл ssh/authorized_keys./~ на вашем удаленном компьютере.

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

# cat ~/.ssh/id_rsa.pub

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

Output
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

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

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

$ mkdir -p ~/.ssh

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

$ echo public_key_string >> ~/.ssh/authorized_keys

В приведённой выше команде замените public_key_string на вывод команды cat ~/.ssh/id_rsa.pub, выполненной в локальной системе. Она должна начинаться с ssh-rsa AAAA….

Наконец, убедимся, что для каталога ssh./~ и файла author_keys установлены соответствующие разрешения:

$ chmod -R go= ~/.ssh

Это рекурсивно удаляет все разрешения “group” и “other” для каталога /ssh./~.

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

chown -R sammy:sammy ~/.ssh

В этом руководстве наш пользователь носит имя sammy, но вам следует заменить имя пользователя в приведенной выше команде на соответствующее имя.

Теперь мы можем выполнять аутентификацию без пароля на Ubuntu Server.

Шаг 3 — Аутентификация на сервере Ubuntu с использованием ключей SSH

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

Основной процесс тот же:

$ ssh username@remote_host

Если вы подключаетесь к этим хостам впервые (если вы используете последний метод, описанный выше), вы можете увидеть что-то вроде этого:

Output
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

Это означает, что ваш локальный компьютер не распознаёт удалённый хост. Введите “yes” и нажмите ENTER, чтобы продолжить.

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

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

Шаг 4 — Отключите аутентификацию по паролю на вашем сервере

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

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

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

$ sudo nano /etc/ssh/sshd_config

Внутри файла найдите директиву PasswordAuthentication. Эта строка может быть закомментирована с помощью # в начале. Раскомментируйте строку, удалив # и установив значение no. Это отключит возможность входа по SSH с использованием паролей учётных записей:

/etc/ssh/sshd_config


. . .
PasswordAuthentication no
. . .

После этого сохраните и закройте файл, нажав CTRL+X, затем Y для подтверждения сохранения файла и, наконец, ENTER для выхода из nano. Чтобы изменения вступили в силу, необходимо перезапустить службу sshd:

$ sudo systemctl restart ssh

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

# ssh username@remote_host

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

Демон SSH на вашем сервере Ubuntu теперь реагирует только на аутентификацию по SSH-ключу. Вход по паролю отключен.

Результат

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

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

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

Вам также может понравиться

Как установить IBSng на CentOS 6/7

Руководство по установке IBSng на CentOS 6/7 В этой статье приведено руководство по установке IBSng на CentOS 6/7, которое поможет вам…

Как войти на сервер Windows через удаленный рабочий стол

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

Облачное пространство

Что такое облачное пространство и представляем лучшие облачные хранилища в 2020 году? Учитывая растущую популярность облачного пространства, в этом…