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