- Как настроить authorized_keys SSH в Ubuntu?
- Предпосылки
- Сгенерируйте SSH-ключ
- Создайте файл authorized_keys
- Измените файл конфигурации
- Скопируйте открытый ключ на клиентскую машину
- Вход на серверную машину с помощью SSH без пароля
- Заключение
- Авторизация по ключу SSH
- Как работают ключи SSH?
- Как создать ключи SSH?
- Загрузка ключа на сервер
- Отключение проверки пароля
- Выводы
- Как настроить ключи SSH в Ubuntu 18.04
- Введение
- Шаг 1 — Создание пары ключей RSA
- Шаг 2 — Копирование публичного ключа на сервер Ubuntu
- Копирование ключа с использованием ssh-copy-id
- Копирование публичного ключа через SSH
- Копирование публичного ключа вручную
- Шаг 3 — Аутентификация на сервере Ubuntu с использованием ключей SSH
- Шаг 4 — Отключение аутентификации по паролю на вашем сервере
- Заключение
Как настроить authorized_keys SSH в Ubuntu?
SSH или Secure Shell предназначен для доступа к содержимому удаленного хоста для удаленного выполнения различных типов задач. По умолчанию SSH не установлен в Ubuntu. SSH может обеспечить защищенный паролем зашифрованный доступ к удаленной системе после установки. Сервер SSH работает на удаленном хосте, а клиент SSH работает в системе, которая устанавливает удаленное соединение. Authorized_keys файл является наиболее важной частью соединения SSH. Он определяет ключи, используемые для аутентификации пользователей, которым разрешено входить на удаленный хост с использованием аутентификации с открытым ключом. Использование этого файла для SSH-соединения объясняется в этом руководстве.
Предпосылки
SSH-сервер по умолчанию не установлен в Ubuntu. Перед запуском этого руководства вам необходимо установить пакет OpenSSH, который будет работать как SSH-сервер. Выполните следующую команду, чтобы установить сервер OpenSSH, если он не был установлен в системе ранее.
Сгенерируйте SSH-ключ
Сгенерируйте пары ключей SSH для выполнения команд на удаленном сервере. Выполните следующую команду, чтобы создать открытый и закрытый ключи. Закрытый ключ будет храниться на удаленном сервере, а открытые ключи будут надежно храниться на клиенте.
После выполнения вышеуказанной команды он спросит имя файла, в котором будет храниться ключ. Нажмите клавишу Enter, чтобы сохранить имя файла открытого ключа по умолчанию — id_rsa.pub. Затем он запросит пароль для входа в систему. Снова нажмите клавишу Enter два раза, если вы хотите сохранить пустой пароль. Следующий аналогичный вывод появится после генерации ключей.
Создайте файл authorized_keys
Файл id_rsa.pub содержит открытый ключ SSH-соединения, хранящийся в папке
/.ssh / удаленного хоста. Клиентскому компьютеру также потребуется открытый ключ для подключения к удаленному хосту, который будет скопирован в следующей части руководства. Вы должны создать файл с именем authorized_keys внутри папки
/.ssh удаленного хоста, который будет содержать открытый ключ. Выполните следующую команду, чтобы переместить файл id_rsa.pub в файл
Ошибка не появится, если файл будет перемещен правильно, как на следующем изображении.
Измените файл конфигурации
Вы должны установить некоторые параметры конфигурации на сервере, чтобы установить SSH-соединение без пароля. Выполните следующую команду, чтобы открыть файл sshd_config с помощью редактора nano, чтобы установить необходимые значения параметров.
Установите для параметра PasswordAuthentication значение no, чтобы отключить параметр текстового пароля для SSH-соединения.
Пароль Аутентификация нет.
Сохраните и закройте файл. Выполните следующую команду, чтобы перезапустить службу SSH.
Выполните следующую команду, чтобы установить биты разрешений для файла authorized_keys, чтобы предотвратить несанкционированный доступ к этому файлу.
Скопируйте открытый ключ на клиентскую машину
Теперь войдите на клиентский компьютер, с которого вы будете выполнять команду ssh, чтобы установить SSH-соединение с удаленным хостом. Здесь две учетные записи пользователей Ubuntu использовались для проверки SSH-соединения на локальном сервере. Одна учетная запись пользователя использовалась в качестве клиента, а другая учетная запись пользователя использовалась в качестве сервера в этом руководстве.
Выполните следующую команду, чтобы создать папку с именем
/.ssh на клиентском компьютере, если она не существует.
Выполните следующую команду, чтобы скопировать открытый ключ с удаленного хоста в папку
Вы должны предоставить пароль имени пользователя удаленного хоста для копирования открытого ключа на клиентскую машину. Если файл скопирован правильно, вы получите следующий результат. Теперь клиентский компьютер готов установить соединение с сервером с помощью службы ssh.
Вход на серверную машину с помощью SSH без пароля
Теперь открытый ключ существует как на клиентских, так и на серверных машинах. Когда клиентский компьютер отправляет запрос на соединение серверу с помощью команды ssh, сервер сопоставляет открытый ключ клиента с открытым ключом сервера. Если совпадения найдены, то соединение будет установлено от клиента к серверу. Вы можете подключиться к серверу или удаленному хосту, используя имя хоста или IP-адрес. Локальный сервер использовал это руководство, чтобы показать использование авторизованных ключей для установления SSH-соединения с клиентского компьютера на серверный. Одна учетная запись использовалась как серверная машина, на которой установлен сервер OpenSSH, а другая учетная запись использовалась здесь как клиентская машина. Выполните следующую команду на клиентском компьютере, чтобы установить соединение с сервером.
Следующий вывод появится после выполнения указанной выше команды. Выходные данные показывают, что имя пользователя клиентской машины — «yesmin». Имя пользователя серверной машины — fahmida. SSH-соединение установлено правильно, поскольку имя пользователя изменилось на «fahmida» с «yesmin». Теперь можно легко получить доступ к содержимому серверной машины. Если пользователь сейчас выполняет какую-либо команду, вывод будет сгенерирован на основе сервера.
Заключение
Использование authorized_keys для установления SSH-соединения было объяснено в этом руководстве с использованием localhost. Вы можете выполнить тот же процесс, чтобы установить SSH-соединение для удаленного хоста. Вы также можете использовать команду ssh-copy-id, чтобы установить SSH-соединение с сервером, показанным в другом руководстве.
Источник
Авторизация по ключу 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 в Ubuntu 18.04
Введение
SSH (secure shell, безопасная оболочка) представляет собой шифрованный протокол для администрирования и взаимодействия между серверами. Во время работы с сервером Ubuntu вы, скорее всего, будете проводить большую часть времени в вашем терминале, подключенном через SSH к вашему серверу.
В этом руководстве мы рассмотрим процесс настройки ключей SSH на вновь установленной Ubuntu. Ключи SSH представляют собой простой и безопасный способ входа на ваш сервер, и являются рекомендованным способом входа для всех пользователей.
Шаг 1 — Создание пары ключей RSA
Сперва создадим пару ключей на клиентской машине (обычно, это ваш компьютер):
По умолчанию ssh-keygen создаёт 2048-битную пару ключей RSA, которая достаточно безопасна для большинства сценариев использования (вы можете также добавить к этой команде флаг -b 4096 для получения 4096-битный ключей).
После ввода этой команды вы должны увидеть следующий вывод:
Нажмите Enter для сохранения пары ключей в директорию .ssh/ внутри вашей домашней директории или задайте другую директорию.
Если ранее вы уже генерировали пару SSH ключей, вы можете увидеть следующий вывод:
Если вы выберете перезаписать ключи на диск, вы не сможете использовать старые ключи для аутентификации. Будьте очень осторожны при выборе yes , это решение нельзя будет отменить.
Вы должны увидеть следующий вывод:
Здесь вы можете задать ключевую фразу (passphrase), что обычно рекомендуется сделать. Ключевая фраза добавляет дополнительный уровень безопасности для предотвращения входа на сервер неавторизованных пользователей.
Вы должны увидеть следующий вывод:
Теперь у вас есть пара из публичного и секретного ключей, которые вы можете использовать для аутентификации. Далее мы поместим публичный ключ на ваш сервер, для того, чтобы вы могли использовать аутентификацию по ключам SSH для входа.
Шаг 2 — Копирование публичного ключа на сервер Ubuntu
Самым быстрым способом скопировать ваш публичный ключ на машину с Ubuntu — использовать утилиту ssh-copy-id . Поскольку этот метод невероятно прост, он рекомендуется для использования в первую очередь. Если по какой либо причине использование ssh-copy-id невозможно, вы можете использовать один из двух альтернативных методов, описанных далее (копирование в входом по SSH с использованием пароля и ручное копирование ключа).
Копирование ключа с использованием ssh-copy-id
Утилита ssh-copy-id доступна по умолчанию во многих операционных системах, поэтому, скорее всего, она доступна и на вашей локальной машине. Для использования этого метода копирования ключа вам необходимо иметь доступ к своему серверу по SSH с использованием пароля.
Для использования утилиты вам необходимо указать адрес удалённого хоста, к которому вы хотите подключиться, а также имя пользователя, имеющего доступ к хосту по SSH. Именно для аккаунта этого пользователя и будет скопирован ваш публичный ключ SSH.
Синтаксис команды выглядит следующим образом:
Вы можете увидеть вывод следующего вида:
Это означает, что ваш локальный компьютер не узнал удалённый хост. Это случается, когда вы пытаетесь подключиться к новому хосту в первый раз. Напечатайте “yes” и нажмите ENTER для продолжения.
Далее утилита будет искать в директории вашего локального пользователя файл ключа id_rsa.pub , созданный нами ранее. Если файл ключа будет успешно обнаружен, утилита запросит пароль для входа на удалённый хост:
Введите пароль (при вводе он не будет отображаться из соображений безопасности) и нажмите ENTER . Утилита зайдёт на удалённый хост, используя данные аккаунта, пароль для которого вы ввели. Далее утилита скопирует содержимое файла публичного ключа из
/.ssh/id_rsa.pub в файл authorized_keys в поддиректории
/.ssh домашней директории вашего пользователя на удалённом хосте.
Вы должны увидеть следующий вывод:
Теперь ваш публичный ключ id_rsa.pub загружен на удалённый хост. Вы можете перейти к Шагу 3.
Копирование публичного ключа через SSH
Если у вас нет утилиты ssh-copy-id , но у вас есть пароль для входа по SSH на ваш удалённый сервер, мы можете загрузить свой ключ вручную.
Для этого можно использовать команду cat , которая прочитает содержимое файла публичного ключа на локальной машине, а затем мы сможем отправить прочитанные данные ключа по SSH на удалённый сервер.
Кроме этого, нам потребуется убедиться, что директория
/.ssh существует, а также имеет корректные права доступа для используемого нами аккаунта пользователя.
Далее мы сможем отправить содержимое файла ключа в файл authorized_keys внутри этой директории. Мы будем использовать синтаксис >> для добавление данных в конец файла вместо перезаписи содержимого файла. Это позволит нам добавить ключ без удаления ранее добавленных ключей.
Команда выглядит следующим образом:
Вы можете увидеть вывод следующего вида:
Это означает, что ваш локальный компьютер не узнал удалённый хост. Это случается, когда вы пытаетесь подключиться к новому хосту в первый раз. Напечатайте “yes” и нажмите ENTER для продолжения.
Далее вам будет предложено ввести пароль аккаунта пользователя на удалённом хосте:
После ввода пароля содержимое вашего файла публичного ключа id_rsa.pub будет скопировано в конец файла authorized_keys на удалённом хосте. Если всё прошло успешно, вы можете перейти к Шагу 3.
Копирование публичного ключа вручную
Если у вас нет доступа к вашей удалённой машине по SSH с использованием пароля, вам придётся проделать описанный выше процесс вручную.
Мы вручную добавим содержимое вашего файла id_rsa.pub в конец файла
/.ssh/authorized_keys на удалённой машине.
Для отображения содержимого файла id_rsa.pub введите следующую команду на вашей локальной машине:
Вы увидите содержимое файла ключа, выглядящее примерно так:
Зайдите на вашу удалённую машину любым доступным для вас способом.
Далее нам необходимо убедиться, что директория
/.ssh существует. Следующая команда создаст директорию, если её не существует или не сделает ничего, если директория была создана ранее:
Теперь вы можете создать или отредактировать файл authorized_keys внутри этой директории. Вы можете добавить содержимое файла id_rsa.pub в конец файла authorized_keys , при необходимости создав его, следующей командой:
В команде выше замените строка_публичного_ключа на вывод команды cat
/.ssh/id_rsa.pub , которую вы выполнили на своей локальной машине. Строка должна начинаться с ssh-rsa AAAA. .
Далее убедимся, что директория
/.ssh и файл authorized_keys имеют подходящие права доступа:
Эта команда удаляет права доступа для “group” и “other” для директории
Если вы используете аккаунт root для настройки ключей для аккаунта пользователя, важно, чтобы директория
/.ssh принадлежала этому самому пользователю, а не пользователю root :
В нашем руководстве мы используем пользователя с именем sammy , вам же следует использовать имя своего пользователя в команде выше.
Теперь мы можем попробовать аутентифицироваться на нашем Ubuntu сервере без пароля.
Шаг 3 — Аутентификация на сервере Ubuntu с использованием ключей SSH
Если вы успешно проделали описанные выше шаги по переносу публичного ключа, вы должны быть способны зайти на свой удалённый хост без использования пароля.
Процесс входа выглядит так же:
Если вы заходите на удалённый хост по SSH в первый раз, вы можете увидеть вывод следующего вида:
Это означает, что ваш локальный компьютер не узнал удалённый хост. Напечатайте “yes” и нажмите ENTER для продолжения.
Если при создании пары ключей вы не задали ключевую фразу (passphrase), вы будете залогинены автоматически. Если вы задали ключевую фразу, вам будет предложено её ввести (обратите внимание, что вводимые символы не будут отображаться на экране в целях безопасности). После аутентификации откроется новая сессия оболочки (shell session) на удалённом хосте от имени используемого вами удалённого аккаунта пользователя.
Если аутентификация по ключу прошла успешно, рекомендуем ознакомиться с тем, как далее повысить безопасность вашего сервера путём отключения входа по паролю.
Шаг 4 — Отключение аутентификации по паролю на вашем сервере
Если вам удалось войти в ваш удалённый аккаунт на удалённом хосте по SSH без ввода пароля, вы успешно настроили аутентификацию по ключу SSH для вашего аккаунта. Однако возможность входить на сервер с использованием пароля всё есть активна, что означает, что ваш сервер уязвим для атак с перебором пароля (brute-force attacks).
Перед тем как следовать дальнейшим инструкциям, убедитесь, что вы настроили аутентификацию по ключу SSH для вашего пользователя root или для пользователя с привилегиями sudo на вашем сервере. После завершения описанных далее процедур вход по паролю станет недоступен, поэтому очень важно убедиться, что у вас остаётся доступ к вашему серверу.
Как только вы убедитесь, что аккаунт вашего удалённого пользователя имеет привилегии администратора, войдите на сервер с использованием аутентификации по ключу SSH, используя либо аккаунт root , либо аккаунт пользователя с привилегиями sudo . Далее откройте конфигурационный файл демона SSH:
Внутри файла найдите директиву PasswordAuthentication . Она может быть закомментирована. Раскомментируйте её при необходимости и установите её значение в “no”. Это отключит возможность входа на сервер по паролю.
Сохраните и закройте файл нажав CTRL + X , затем Y для подтверждения сохранения файла, а далее ENTER для выхода из текстового редактора nano. Для применения внесённых изменений нам необходимо перезапустить сервис sshd :
В качестве меры предосторожности откройте новое окно терминала и проверьте, что соединение по SSH работает корректно, перед тем, как закрывать текущую сессию:
После проверки работоспособности SSH соединения, вы можете закрыть все открытые сессии с сервером.
Теперь демон SSH на вашем сервере с Ubuntu работает только с ключами SSH. Аутентификация по паролю полностью отключена.
Заключение
Теперь на вашем сервере настроен вход по ключам SSH, позволяющий заходить на сервер без использования пароля.
Источник