Как установить ключи SSH на Debian 9

Обсудить

Введение

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

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

Шаг 1: создание ключевой пары RSA

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

$ ssh-keygen

По умолчанию команда создаст пару RSA-ключей длиной 2048 бит - для большинства случаев такой длины хватает, но если вы хотите создать ключи длиной 4096 бит, то нужно добавить к команде -b 4096.

После введения команды вы должны увидеть примерно такой вывод:

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

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

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

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

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

Далее вы увидите:

Enter passphrase (empty for no passphrase):

Здесь вы можете опционально добавить кодовую фразу (рекомендуется это сделать). Это будет еще один дополнительный уровень защиты от несанкционированной авторизации.

После этого вы увидите:

Your 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:
a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 username@remote_host
The key's randomart image is:
+--[ RSA 2048]----+
|     ..o   |
|   E o= .     |
|    o. o     |
|        ..  |
|      ..S  |
|     o o.   |
|   =o.+.      |
|. =++..       |
|o=++.            |
+-----------------+

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

Шаг 2: копирование ключа на сервер

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

Копирование с использованием ssh-copy-id

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

Далее вам нужно будет указать удаленный хост, к которому вы хотите подсоединиться, и пользовательский аккаунт, который вы используете для авторизации с паролем. Синтаксис команды:

$ ssh-copy-id имя_пользователя@удаленный_хост

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

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, который был создан ранее. Как только ключ будет найден, вам нужно будет ввести пароль для удаленного пользователя:

/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
username@203.0.113.1's password:

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

Вы должны увидеть вот такой вывод:

Number of key(s) added: 1
Now try logging into the machine, with:   "ssh 'username@203.0.113.1'"
and check to make sure that only the key(s) you wanted were added.

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

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

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

Сначала выведите содержимое ключа id_rsa.pub:

$ cat ~/.ssh/id_rsa.pub

Вывод будет выглядеть примерно вот так:

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

Теперь вы можете создавать или изменять файл authorized_keys внутри этой директории. Что нужно сделать: добавьте содержимое файла id_rsa.pub в конец файла authorized_keys (создав его, если он отсутствует):

$ echo содержимое_ключа >> ~/.ssh/authorized_keys

Наконец, нужно убедиться, что директория ~/.ssh и файл authorized_keys имеют правильные права доступа:

$ chmod -R go= ~/.ssh

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

$ chown -R имя_пользователя:имя_пользователя ~/.ssh

Теперь нужно попробовать подключиться к серверу без использования пароля.

Шаг 3: авторизация на сервере с использованием SSH-ключей

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

Базовый синтаксис:

$ ssh имя_пользователя@удаленный_хост

Как уже было сказано, если вы первый раз подключаетесь к этому хосту удаленно, то вы можете увидеть вывод - запрос на подключение (Are you sure you want to continue connecting (yes/no)?) Напечатайте "yes" и нажмите Enter.

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

Шаг 4: отключение авторизации с использованием пароля

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

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

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

$ sudo nano /etc/ssh/sshd_config

Внутри файла найдите директиву PasswordAuthentication. Если она закомментирована, раскомментируйте ее и поставьте значение “no”:

...
PasswordAuthentication no
...

Сохраните и закройте файл, а затем перезапустите sshd:

$ sudo systemctl restart ssh

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

$ ssh имя_пользователя@удаленный_хост

Если все хорошо, то все сессии на сервере можно завершить.

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

VPS/VDS

Комментарии