Как подключиться по ssh с rsa ключом
Перейти к содержимому

Как подключиться по ssh с rsa ключом

  • автор:

Авторизация по ключу SSH

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

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

Как работают ключи SSH?

SSH сервер может выполнять аутентификацию пользователей с помощью различных алгоритмов. Самый популярный — это аутентификация по паролю. Он достаточно прост, но не очень безопасный. Пароли передаются по безопасному каналу, но они недостаточно сложны для противостояния попыткам перебора. Вычислительная мощность современных систем в сочетании со специальными скриптами делают перебор очень простым. Конечно, существуют другие способы дополнительной безопасности, например, fail2ban, но аутентификация по ключу SSH более надежна.

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

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

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

Как создать ключи SSH?

Сначала необходимо создать ключи ssh для аутентификации на локальном сервере. Для этого существует специальная утилита ssh-keygen, которая входит в набор утилит OpenSSH. По умолчанию она создает пару 2048 битных RSA ключей, которая подойдет не только для SSH, но и для большинства других ситуаций.

И так, генерация ключей ssh выполняется командой:

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

/.ssh/. Лучше ничего не менять, чтобы все работало по умолчанию и ключи автоматически подхватывались. Секретный ключ будет называться id_rsa, а публичный id_rsa.pub.

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

  • Пароль никогда не попадет в сеть, он используется только на локальной машине для расшифровки ключа. Это значит что перебор по паролю больше невозможен.
  • Секретный ключ хранится в закрытом каталоге и у клиента ssh нет к нему доступа пока вы не введете пароль;
  • Если злоумышленник хочет взломать аутентификацию по ключу SSH, ему понадобится доступ к вашей системе. И даже тогда ключевая фраза может стать серьезной помехой на его пути.

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

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

Загрузка ключа на сервер

Когда генерация ключей завершена, нам осталось только загрузить ключ на сервер. Для загрузки ключа можно использовать несколько способов. В некоторых случаях вы можете указать ключ в панели управления сервером, например, сPanel или любой другой. Но мы такой способ рассматривать не будем. Мы рассмотрим ручные способы.

Самый простой способ скопировать ключ на удаленный сервер — это использовать утилиту ssh-copy-id. Она тоже входит в пакет программ OpenSSH. Но для работы этого метода вам нужно иметь пароль доступа к серверу по SSH. Синтаксис команды:

При первом подключении к серверу система может его не распознать, поэтому вам нужно ввести yes. Затем введите ваш пароль пользователя на удаленном сервере. Утилита подключится к удаленному серверу, а затем использует содержимое ключа id.rsa.pub для загрузки его на сервер в файл

/.ssh/authorized_keys. Дальше вы можете выполнять аутентификацию с помощью этого ключа.

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

/.ssh, а затем поместим наш ключ в файл authorized_keys с помощью символа >>, это позволит не перезаписывать существующие ключи:

/.ssh/id_rsa.pub | ssh username@remote_host «mkdir -p

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

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

Отключение проверки пароля

Если пароль больше не будет использоваться, то для увеличения безопасности системы лучше его вовсе отключить. Но убедитесь, что ключ надежно сохранен и вы его не потеряете, потому что по паролю вы больше не войдете. Авторизуйтесь на сервере, затем откройте конфигурационный файл /etc/ssh/sshd_config и найдите там директиву PasswordAuthenticatin. Нужно установить ее значение в No:

sudo vi /etc/ssh/sshd_config

Теперь сохраните файл и перезапустите службу ssh:

sudo service ssh restart

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

Выводы

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

Аутентификация по SSH с помощью ключей RSA.

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

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

В-третьих, повышение уровня комфорта. Когда число управляемых серверов (роутеров) измеряется десятками, то однажды можно устать набирать пароли и/или запоминать их.

Немного теории

Аббревиатура RSA образована из фамилий трёх человек: Рональда Ривеста (Ronald Linn Rivest), Ади Шамира (Adi Shamir) и Леонарда Адлемана (Leonard Max Adleman). Они и предложили миру криптографическую систему, состоящую из открытого и закрытого ключей, которые вычисляются с помощью математических действий. Прямая дешифрация такого ключа является задачей разложения его на простые множители. Предполагается, что решение этой задачи является вычислительно сложным и не может быть завершено в какой-то разумный срок, что и является основой стойкости данной криптосистемы.

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

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

Подготовка

Для получения открытого (публичного, public key) и закрытого (приватного, private key) ключей необходимо воспользоваться генератором, который есть на любой linux/freebsd-машине

По умолчанию генератор создает 2048-битную ключевую пару, но при желании его можно запустить с флагом

и получить пару 4096-битных ключей.

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

Шаги работы команды при её первом запуске будут выглядеть примерно так

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

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

Если вы ответите утвердительно (y, yes), старые ключи будут перезаписаны, и вы не сможете ими воспользоваться. При возникновении сомнений смените путь и/или имя файла.

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

В итоге генератор сообщит,

куда положил ключи, а также представит отпечаток и его визуализацию

Здесь fooname@fooserver к отпечатку не относится, а имеет смысл комментария, чтобы не запутаться, с каким пользователем и сервером этот отпечаток ассоциирован.

Теперь у вас есть пара RSA-ключей. Обращаем ваше внимание, что она находится на некой linux/freebsd-машине, которую вы использовали для генерации. Целевая система (то есть к которой необходимо настроить доступ) может находиться где-то еще. Следовательно, после копирования ключей (о чём ниже) их следует затереть во избежание компрометации

Если же это подконтрольная вам система, и вы понимаете, что делаете, ключи можно оставить.

Размещение ключей на linux-сервере

Не будем останавливаться на копировании открытого ключа с помощью утилиты ssh-copy-id, потому что есть она не везде, делает всё за нас, в этой связи суть происходящего ускользает. Желающие могут воспользоваться поиском.

Итак. Получаем созданный открытый ключ

который будет выглядеть вот так

Логинимся на целевую систему и переходим в свой домашний каталог (или переходим в каталог пользователя, если вы под root)

Создаем папку для хранения ключей, копируем все символы ключа (начиная с ssh-rsa и до fooname@fooserver включительно) и вставляем в файл authorized_keys

Сразу настраиваем права доступа, чтобы посторонние не могли туда попасть,

удалив доступ для «group» и «other». А если вы под root, то меняем еще и владельца

Теперь целевая система «знает» о вас.

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

Размещение ключей на роутере Mikrotik

Для импорта открытого ключа на Mikrotik воспользуемся Winbox.

Известным нам способом получаем созданный открытый ключ

который, напоминаем, выглядит так

Выделяем все без исключения символы и сохраняем в какой-нибудь файл (хоть в Проводнике, хоть в Far’е). Желательно с понятным именем и расширением, например id_rsa.pub. Затем, используя Winbox, копируем файл на роутер

Открываем список пользователей и переходим на вкладку SSH Keys. Нажимаем кнопку Import SSH Key, в поле User пишем имя существующего пользователя, которому будет соответствовать наш ключ, выбираем файл с ключом из списка и нажимаем кнопку Import SSH Key.

Если все выполнено правильно, картинка будет выглядеть так

Теперь на роутер можно попасть, используя RSA-ключи.

Подключение к целевой системе

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

Теперь разбираемся с закрытым ключом.

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

с именем id_rsa. Можете даже заглянуть в него

Выполнив команду на подключение,

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

Для случая, когда подключение к целевой системе будет осуществляться из какого-то совсем иного места, то есть другой linux/freebsd-машины, необходимо на этой другой машине в свой домашний каталог поместить закрытый ключ с выставлением необходимых прав.

Использование RSA-ключа в PUTTY

Нередко (а даже наиболее больше максимально часто) администратор использует windows-машину на своем рабочем месте. К счастью, для windows-среды существует совершенно прекрасный SSH-клиент PUTTY, который, к тому же, умеет много чего еще. Давайте разберемся, как с его помощью воспользоваться RSA-ключом.

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

и копируем его полностью.

Открываем Блокнот, вставляем скопированные данные и сохраняем файл без расширения, не забыв при этом указать тип файла Все файлы. В принципе ничего страшного не произойдет, если сохранить файл с расширением .txt, но на наш взгляд это немного неряшливо.

Запускаем скачанный ранее PuTTY Key Generator (puttygen.exe), заходим в пункт меню Conversions и выбираем Import Key

Будет выполнено чтение и загрузка нашего закрытого ключа. Далее жмём кнопку Save private key

Если PuTTYgen спросит нас,

(Вы уверены, что хотите сохранить этот ключ, не защитив его парольной фразой?) отвечаем Да и сохраняем файл с понятным именем. Обратите внимание, что теперь тип файла будет PuTTYgen Private Key Files и расширение .ppk.

Чтобы наконец воспользоваться новым функционалом, запускаем putty.exe и в дереве параметров идем в Connection -> SSH -> Auth, где в поле Private key file for authentication нажимаем кнопку Browse. и выбираем наш сконвертированный файл закрытого ключа с расширением .ppk

После этого возвращаемся в узел Session, задаем имя сессии и нажимаем кнопку Save

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

Чтобы подключиться к целевой системе, необходимо запустить PUTTY, выбрать созданную нами сессию и нажать Load для загрузки настроек, затем указать DNS-имя (или ip-адрес), порт и нажать Open. После чего мы должны оказаться в командной строке под своей учетной записью. Если этого не произошло, пройдитесь внимательно по всем шагам еще раз.

Заключение

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

То есть раскомментировать указанные строки (если они закомментированы) и установить сооветствующий режим.

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

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

Установка и настройка подключения по SSH

Я подключаюсь с Windows машины или из под Ubuntu к серверу с Debian или Ubuntu. Чтобы установить SSH используем в debian-based дистрибутивах.

После завершения установки будет запущен SSH-сервер в режиме демона. Это можно проверить командой:

Теперь сервер работает с базовыми настройками по-умолчанию. К серверу уже можно подключиться по SSH, и это нормально работает в частных сетях, однако лучше бы исправить некоторые параметры для работы в публичных сетях. Настройки хранятся в файле по адресу /etc/ssh/sshd_config. Посмотреть его можно командой

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

Обратим внимание на параметры Port, AddressFamily, ListenAddress Port задает номер порта, через который будет работать соединение, стандартный порт 22, часто подвергается сканированию ботами. Чтобы задать параметр убираем символ # в начале строки и указываем нужное значение, например 58292. Главное, чтобы порт не конфликтовал с другими портами в системе, mysqld использует порт 3306, httpd — 80, ftpd — 21, поэтому выбирайте пятизначное значение, но не больше 65535.

AddressFamily задает семейство используемых адресов, IPv4 и IPv6, если используются только IPv4 адреса, то IPv6 можно отключить. AddressFamily inet — для IPv4 адресов и AddressFamily inet6 для IPv6 адресов. По-умолчанию значение any.

PubkeyAuthentication позволяет проводить авторизацию и шифрование трафика с помощью SSH-ключей.

Также серверу можно явно указать, где хранятся открытые ключи пользователей. Это может быть как один общий файл для хранения ключей всех пользователей (обычно это файл etc/.ssh/authorized_keys), так и отдельные для каждого пользователя ключи. Второй вариант предпочтительнее в силу удобства администрирования и повышения безопасности. Для общего файла:

Для каждого пользователя. Благодаря шаблону автоподстановки с маской «%h» будет использоваться домашний каталог пользователя.

Обратите внимание, что вариант по-умолчанию

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

И обязательно отключить идентификацию по пустому паролю:

Следует также отключать root-доступ:

Значение по-умолчанию PermitRootLogin prohibit-password т.е. удалённый вход под пользователем root с парольной и интерактивной аутентификацией теперь запрещён. При указании значений without-password или prohibit-password допускается только аутентификация по ключам.

Для применения сделанных настроек необходим перезапуск SSH-сервера:

Для подключения к серверу используется команда:

Где user_name — имя пользователя. А host_name имя или ip адрес узла к которому производится подключение. Например:

При этом утилита ssh запросит (в зависимости от настроек сервера) логин, пароль или парольную фразу для разблокировки приватного ключа пользователя.

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

Чтобы сгенерировать SSH-ключи на клиентской машине (то есть на той, на которой ты работаешь, не на сервере), выполни:

Генерация ssh ключейВведи путь к файлу, в который будут помещены ключи, каталог по-умолчанию указан в скобках, если не знаешь зачем, не меняй его. Если хочешь оставить расположение по умолчанию: нажми Enter. Пароль (passphrase) используется для огранчения доступа к закрытому ключу, пароль усложнит использование ключа третьми лицами в случае утраты. Если не хочешь использовать пароль: нажми Enter без заполнения строки.

При успешной генерации ключей ты увидишь что-то вот такое: Генерация ssh ключей

Открытый ключ хранится в файле /домашний_каталог/.ssh/id_rsa.pub, закрытый — /домашний_каталог/.ssh/id_rsa.

Можем посмотреть на них при помощи cat : Генерация ssh ключей

Осталось скопировать открытый ключ на сервер в файл /домашний_каталог/.ssh/authorized_keys.

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

Генерация ssh ключей

Команда chmod устанавливает права доступа к папке: “Владелец может читать, записывать и запускать на выполнение; никто другой не имеет права выполнять никакие действия”.

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

Также можно открыть файл authorized_keys на сервер редактором, например, nano и вставить строку с открытым ключом после ssh-rca Генерация ssh ключей

Еще один способ скопировать ключ в authorized_keys: команда echo , которая помещает строку в конец файла:

Генерация ssh ключей

Другой способ перенести открытый ключ на сервер предлагает beget.com Копируем открытый ключ на удаленную систему при помощи scp

Авторизуемся на удаленном сервере:

Заносим открытый ключ нашей локальный системы в авторизованные ключи удаленной системы, устанавливаем правильные права и “убираем за собой мусор”:

Теперь можно перейти к настройкам и отключить аутентификацию по паролю. Подключаемся к серверу, открываем sshd_config:

Раскомментируем строку PasswordAuthentication и вместо yes укажем no:

Генерация ssh ключейПерезапускаем службу sshd:

Теперь можно подключаться к серверу:

Или если вы меняли и порт, то

Понятно, что вместо 58292 должен быть наш номер порта. Также можно указать логин при помощи -l

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

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

Настройка аутентификации на базе ключей SSH на сервере Linux

Настройка аутентификации на базе ключей SSH на сервере Linux

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

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

Как работают ключи SSH?

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

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

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

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

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

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

/.ssh/authorized_keys в учетной записи пользователя, которую вы используете для входа.

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

Создание ключей SSH

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

Для этого мы можем использовать специальную утилиту ssh-keygen , которая входит в стандартный набор инструментов OpenSSH. По умолчанию она создает пару 2048-битных ключей RSA, что подходит для большинства сценариев использования.

Сгенерируйте на локальном компьютере пару ключей SSH, введя следующую команду:

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

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

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

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

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

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

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

  • Закрытый ключ SSH (защищенная паролем часть) никогда не доступен через сеть. Парольная фраза используется только для расшифровки ключа на локальном компьютере. Это означает, что парольную фразу нельзя взломать через сеть методом прямого подбора.
  • Закрытый ключ хранится в каталоге с ограниченным доступом. Клиент SSH не принимает закрытые ключи, хранящиеся в каталогах, доступ к которым не ограничен. У самого ключа могут быть ограниченные разрешения (чтение и запись доступны только владельцу). Это означает, что другие пользователи системы не смогут создать уязвимость.
  • Для попытки взлома защищенного парольной фразой закрытого ключа SSH злоумышленнику уже необходим доступ к системе. Это означает, что у него уже должен быть доступ к учетной записи пользователя или учетной записи root. Если вы окажетесь в такой ситуации, парольная фраза может помешать злоумышленнику сразу же попасть на ваши другие серверы. Это может дать вам достаточно времени, чтобы создать и внедрить новую пару ключей SSH и запретить доступ с взломанным ключом.

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

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

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

Как встроить открытый ключ при создании сервера

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

Внизу страницы создания дроплета есть опция для добавления ключей SSH на ваш сервер:

Встраивание ключа SSH

Если вы уже добавили файл открытого ключа в учетную запись DigitalOcean, вы сможете выбрать данную опцию (в примере выше указаны два существующих ключа: “Work key” и “Home key”). Чтобы встроить существующий ключ, нажмите на него, чтобы его выделить. Вы можете встроить несколько ключей на один сервер:

Выбор ключа SSH

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

Диалог ключа SSH

Вставьте содержимое открытого ключа SSH в поле “SSH Key content”. Если вы сгенерировали ключи, используя указанный выше метод, вы можете получить содержимое открытого ключа на локальном компьютере, введя следующую команду:

Вставьте это значение в более крупное поле целиком. В поле “Comment (optional)” вы можете выбрать ярлык для данного ключа. Этот ярлык будет отображаться как имя ключа в интерфейсе DigitalOcean:

Новый ключ SSH

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

/.ssh/authorized_keys в учетной записи пользователя root. Это позволит вам входить на сервер с компьютера, используя ваш закрытый ключ.

Как скопировать открытый ключ на ваш сервер

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

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

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

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

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

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

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

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

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

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

Введите пароль (для безопасности вводимый текст не будет отображаться) и нажмите ENTER. Утилита подключится к учетной записи на удаленном хосте, используя указанный вами пароль. Затем содержимое ключа

/.ssh/id_rsa.pub будет скопировано в основной каталог

/.ssh удаленной учетной записи в файл с именем authorized_keys .

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

Теперь ваш ключ id_rsa.pub выгружен в удаленную учетную запись. Теперь вы можете перейти к следующему разделу.

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

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

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

/.ssh в используемой нами учетной записи и вывести переданные данные в файл authorized_keys в этом каталоге.

Мы используем символ перенаправления >> , чтобы дополнять содержимое, а не заменять его. Это позволяет добавлять ключи без уничтожения ранее добавленных ключей.

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

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

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

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

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

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

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

Содержимое файла id_rsa.pub нужно будет каким-то образом добавить в файл

/.ssh/authorized_keys на удаленном компьютере.

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

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

Откройте удаленный хост, используя любой доступный метод. Например, если вы используете дроплет DigitalOcean Droplet как сервер, вы можете выполнить вход, используя веб-консоль на панели управления:

Доступ к консоли DigitalOcean

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

/.ssh создан. При необходимости эта команда создаст каталог, а если каталог уже существует, команда ничего не сделает:

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

В вышеуказанной команде замените public_key_string результатами команды cat

/.ssh/id_rsa.pub , выполненной на локальном компьютере. Она должна начинаться с ssh-rsa AAAA. .

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

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

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

Базовый процесс выглядит аналогично:

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

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

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

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

Отключение аутентификации с помощью пароля на сервере

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

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

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

Найдите в файле директиву PasswordAuthentication . Она может быть помечена как комментарий. Удалите символ комментария в начале строки и установите значение «no». После этого вы потеряете возможность входа в систему через SSH с использованием паролей учетной записи:

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

На компьютерах под управлением Ubuntu или Debian можно использовать следующую команду:

На компьютерах под управлением CentOS/Fedora этот демон носит имя sshd :

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

Заключение

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

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

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

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