Настройка ssh в Debian 10

Обновлено: 21.11.2024

Задание: объединить (и перевести) эту страницу и французскую (более полную)

Введение

SSH означает Secure Shell и представляет собой протокол для безопасного удаленного входа в систему и использования других безопасных сетевых служб в незащищенной сети 1 . См. Wikipedia — Secure Shell для получения более общей информации и ssh, lsh-client или dropbear для программных реализаций SSH, из которых OpenSSH является наиболее популярным и широко используемым 2 . SSH заменяет незашифрованные telnet, rlogin и rsh и добавляет множество функций.

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

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

Установка

Установка клиента

Обычно клиент устанавливается по умолчанию. Если нет, достаточно запустить от имени пользователя root:

Установка сервера

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

Файлы конфигурации

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

  • ssh_host_dsa_key
  • ssh_host_dsa_key.pub
  • ssh_host_rsa_key
  • ssh_host_rsa_key.pub
  • ssh_host_ecdsa_key
  • ssh_host_ecdsa_key.pub
  • ssh_host_ed25519_key
  • ssh_host_ed25519_key.pub

Повторное создание ключей хоста

Удаленный вход

С паролем

Если вы хотите войти на $remote_host как пользователь, просто введите $remote_user

а затем введите свой пароль.

Если имена пользователей на локальном и удаленном компьютере совпадают, вы можете удалить часть $remote_user@ и просто написать

Если вы впервые подключаетесь к удаленному компьютеру, ssh спросит вас, уверены ли вы, что хотите подключиться к удаленному компьютеру. Ответьте «да» после проверки отпечатка пальца удаленного компьютера, введите свой пароль, и ssh соединит вас с удаленным хостом.

Использование общих ключей

Одной из функций ssh ​​является использование пары закрытых и открытых ключей для подключения к удаленному хосту. Также известен как Ключи SSH. Этот метод позволяет вам войти на удаленный хост без ввода пароля каждый раз. Для этого вы должны сгенерировать пару закрытый/открытый ключ на локальном компьютере и разместить открытый ключ на удаленном хосте.

Для генерации ключа используйте программу ssh-keygen следующим образом

Эта программа создает пару закрытых/открытых ключей в каталоге ~/.ssh. Сначала программа запрашивает файлы назначения для ключей, которые по умолчанию находятся в ~/.ssh. После этого запрашивается парольная фраза.

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

Ваш закрытый ключ — id_rsa (не передавайте его кому-либо), ваш открытый ключ — id_rsa.pub.

Вы копируете свой открытый ключ на удаленный хост с помощью команды ssh-copy-id

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

Управление ключами

Использование графического интерфейса

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

Защита

SSH-сервер

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

Рекомендации по использованию SSH-сервера

Параметры конфигурации

Необходимо отредактировать файл /etc/ssh/sshd_config, чтобы изменить параметры, а затем перезапустить сервер ssh с помощью

" width="16" height="16" />
Параметры AllowUsers и AllowGroups не повышают безопасность SSH-сервера, но в некоторых случаях их использование позволяет немного дольше противостоять атаке методом грубой силы.

Вы можете просмотреть текущие настройки sshd с помощью следующей команды:

Внешние утилиты

Клиент SSH

Передовой опыт работы с SSH-клиентом

Дополнительные функции

Просмотр файлов в графическом интерфейсе

В файловых менеджерах, таких как Konqueror, Dolphin, Krusader и Midnight Commander, вы можете использовать FISH для просмотра файлов в графическом интерфейсе, используя:

Дополнительные команды

текстовый режим

графический режим

кластеры

ssh-агент и ssh-добавить

ssh-agent — полезная утилита для управления закрытыми ключами и их парольными фразами. Большинство сред рабочего стола в Debian уже настроены для запуска ssh-agent (через пользовательские службы systemd или /etc/X11/Xsession), поэтому вам не нужно запускать его вручную.

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

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

брелок

Связка ключей, предоставляемая пакетом связка ключей, представляет собой сценарий оболочки, позволяющий использовать агент ssh в нескольких сеансах одного и того же компьютера. По сути, после первого запуска ssh-agent создает постоянный сокет, разрешающий связь с ssh. На этот сокет ссылаются только в среде сеанса, в котором был запущен агент. Связка ключей позволяет обнаружить агента и распространить доступ к этому агенту на другие сеансы; это позволяет использовать один экземпляр ssh-agent для каждого пользователя на машине.

ssh-спросить пароль

libpam-usb

libpam-usb — это утилита (доступна только для Debian Jessie), позволяющая выполнять аутентификацию с помощью USB-накопителя. Этот пакет включает в себя полезную утилиту: pamusb-agent. Эта утилита после правильной настройки позволяет загружать ключи SSH, имеющиеся на USB-накопителе, после его подключения и выгружать их при отключении.

Удаленные команды

Если вы просто хотите запустить одну команду на удаленном компьютере, вам не нужно входить в систему. Например, вы можете указать ssh запустить команду без входа в систему,

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

Подключение к Debian по SSH из другой ОС

Передовой опыт использования SSH

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

Настройте файл ~/.ssh/config для отправки только правильного ключа.

Устранение неполадок

Несоответствие версии OpenSSL. Построено против 1000105f, у вас есть 10001060

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

SSH зависает

Проблема

Вы пытаетесь подключиться по SSH к удаленному компьютеру. Но во время входа в SSH сеанс зависает/зависает на неопределенный срок. Таким образом, вам не представлена ​​командная строка. И вы не можете использовать какие-либо команды SSH. При использовании режима отладки SSH сеанс зависает на этой строке debug2: канал 0: открыть подтверждение rwindow 0 rmax 32768

Возможная причина

С некоторыми маршрутизаторами за NAT и при использовании OpenSSH. Во время настройки сеанса, после того как был задан пароль, OpenSSH устанавливает поле TOS (тип службы) в дейтаграмме IP. Роутер задыхается от этого. В результате ваш сеанс SSH зависает на неопределенный срок. Другими словами, команды или соединения SSH работают редко или вообще не работают.

Разрешение с IPQoS 0x00

Редактировать один из следующих двух файлов, расположенных по адресу:

Примечание. Файл config предназначен для каждого пользователя, а файл ssh_config — для всех пользователей и всей системы. Если вы не уверены, отредактируйте соответствующий пользовательский файл config.

Содержимое файла до

Нет необходимости перезапускать OpenSSH или Debian. Попробуйте еще раз подключиться по SSH к любому удаленному серверу. Он должен работать. Готово, вы успешно устранили эту проблему

Спасибо Джо и создателю кошек за этот совет

Решение с помощью netcat

ПРЕДУПРЕЖДЕНИЕ. Рекомендуется рассмотреть возможность использования этого другого разрешения с IPQoS 0x00 вместо использования опции netcat/ProxyCommand nc %h %p. Потому что IPQoS 0x00 является официальной встроенной опцией OpenSSH. Кроме того, IPQoS 0x00 — это более прямой способ решения этой проблемы и потенциально более безопасный вариант. Потому что IPQoS 0x00 использует встроенное шифрование SSH для безопасной передачи. Сравните с не зашифрованными передачами netcat. Источники: 1 2. Если вы решите использовать параметр netcat/ProxyCommand nc %h %p, читайте дальше.

Еще один способ решить проблему зависания SSH — использовать ProxyCommand nc %h %p. Для этого выполните те же шаги, что и в приведенном выше разрешении с IPQoS 0x00. Но замените IPQoS 0x00 на

Поддерживать соединение SSH

В целях безопасности по умолчанию соединение SSH автоматически закрывается по истечении заданного периода времени. Но в некоторых случаях вы хотите оставить это соединение открытым.Например, облачное хранилище через SSH-соединение.

ПРЕДУПРЕЖДЕНИЕ. Перед активацией опции сохранения соединения SSH. Рекомендуется рассмотреть возможность защиты как вашего SSH-клиента, так и SSH-сервера. Потому что, например, существует риск того, что если ваши пользователи оставят свой сеанс SSH открытым, а их компьютер без присмотра и разблокированным. Любой может подойти к этому компьютеру, а затем использовать это открытое SSH-соединение. Например, с помощью команды passwd и изменения пароля. И таким образом получить доступ к серверу. Другими словами, прежде чем активировать опцию сохранения активного соединения SSH, рекомендуется использовать здравый смысл и передовые методы обеспечения безопасности.

Для сервера Debian 7.x

Действия для поддержания соединения SSH.

На сервере SSH отредактируйте файл /etc/ssh/sshd_config и добавьте в конец этого файла следующее.

SSH означает Secure Shell. SSH используется для подключения к удаленному компьютеру, доступа к файлам и выполнения административных задач.

Из этого руководства вы узнаете, как включить SSH в Debian 9 (Stretch) или Debian 10 (Buster).

  • Система Debian в качестве SSH-сервера
  • Система Debian выступает в качестве SSH-клиента для каждой системы
  • Доступ к командной строке (Ctrl-Alt-T)
  • Менеджер пакетов Apt (включен по умолчанию)

5 шагов для включения SSH в Debian

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

Шаг 1. Обновите диспетчер пакетов

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

Экран подтверждает, что пакеты были обновлены:

Шаг 2. Установите SSH-сервер

В системе, которая действует как сервер, выполните следующую команду:

Введите пароль при появлении запроса, затем нажмите Y, чтобы продолжить установку. В этом случае в выводе указано, что самая новая версия уже установлена.

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

Система подтверждает, что служба SSH запущена.

Шаг 3. Запустите и остановите сервер SSH

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

Чтобы остановить хост-сервер SSH, введите следующее:

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

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

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

Чтобы отключить SSH на неопределенный срок, введите:

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

Шаг 4. Получите IP-адрес вашего сервера

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

IP-адрес будет иметь следующий формат:

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

Шаг 5. Установите клиентскую службу SSH (необязательно)

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

По умолчанию в большинстве систем Linux установлен клиент SSH. Если у вас нет, введите следующую команду:

sudo apt-get установить openssh-client

В этом примере уже установлена ​​самая новая версия.

Подключение к серверу с помощью SSH

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

Замените UserName на имя авторизованного пользователя на сервере. После знака @ используйте IP-адрес из шага 4 или вы можете использовать доменное имя. Вы также можете указать имя хоста, если сервер настроен на его использование.

При первом подключении система может запросить подтверждение. Введите «да», а затем «введите».

Удаленная система запросит у вас пароль. Используйте пароль, соответствующий предоставленному вами имени пользователя.

Командная строка изменится на [email protected], указывая на то, что выполняемые вами команды выполняются на удаленном сервере.

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

Настройки брандмауэра и безопасности

По умолчанию Debian использует брандмауэр UFW, который может мешать безопасному трафику оболочки.

Чтобы разрешить доступ по SSH, используйте команду:

SSH-трафик проходит через порт 22. Вывод подтверждает, что правила были обновлены.

Чтобы реализовать необходимые меры безопасности, используйте приложение брандмауэра (или конфигурацию маршрутизатора) для настройки переадресации портов. Вам нужно будет обратиться к вашей документации для уточнения деталей. Однако стратегия заключается в том, чтобы перенаправлять запросы трафика, поступающие через порт 22, на IP-адрес компьютера, находящегося за брандмауэром.

Вы также можете настроить свой брандмауэр или маршрутизатор для приема трафика SSH на другой порт, это дополнительный шаг, но тогда вы можете направить этот входящий трафик на порт 22 на вашем сервере. Это полезное решение при открытии вашего сервера для интернет-трафика. Почему? На порт 22 поступает много попыток вторжения, пытающихся получить доступ к SSH. Изменение порта ограничит доступ только тем, кто знает правильный порт, тем самым ограничив несанкционированные подключения.

Если вы хотите подключиться к серверу в Интернете, но не знаете его IP-адрес, используйте этот инструмент.

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

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

Ознакомьтесь с нашим руководством по ошибке «ssh_exchange_identification: Чтение: сброс соединения по узлу», если вы заметили ее при подключении к удаленному серверу.

SSH (от Secure Shell) — это сетевой протокол, который используется для удаленного входа в систему на удаленных компьютерах в локальной сети или через Интернет. Архитектуры SSH обычно включают сервер SSH, который используется клиентами SSH для подключения к удаленному компьютеру.

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

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

В этом руководстве мы рассмотрим, как установить и включить SSH через OpenSSH в дистрибутивах Debian 10.

Оглавление

Предпосылки

Чтобы установить SSH-сервер в Debian 10, вам потребуются права sudo на вашем хосте.

Чтобы проверить, есть ли у вас права sudo, выполните следующую команду

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

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

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

Как видите, я использую OpenSSH v7.9 с OpenSSL v1.1.1.

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

Это также означает, что на моем хосте будут доступны определенные утилиты, связанные с протоколом SSH (например, scp) или FTP-серверами (например, sftp).

Установка сервера OpenSSH в Debian 10

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

Чтобы установить SSH-сервер в Debian 10, выполните следующую команду

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

Если установка прошла успешно, теперь на вашем хосте должна быть установлена ​​служба sshd.

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

По умолчанию ваш SSH-сервер будет работать через порт 22.

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

Отлично! Теперь ваш SSH-сервер запущен и работает на хосте Debian 10.

Включение трафика SSH в настройках брандмауэра

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

Чтобы включить SSH-соединения на вашем хосте, выполните следующую команду

Включить SSH-сервер при загрузке системы

Как вы, наверное, заметили, ваш SSH-сервер теперь работает как служба на вашем хосте.

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

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

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

Настройка SSH-сервера в Debian

Прежде чем предоставлять доступ пользователям через SSH, важно настроить параметры безопасности, чтобы избежать атак, особенно если ваш сервер работает как онлайн-VPS.

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

По умолчанию ваши файлы конфигурации SSH находятся в /etc/ssh/

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

  • ssh_config: определяет правила SSH для клиентов. Это означает, что он определяет правила, которые применяются каждый раз, когда вы используете SSH для подключения к удаленному хосту или для передачи файлов между хостами;
  • sshd_config: определяет правила SSH для вашего SSH-сервера. Он используется, например, для определения доступного порта SSH или для запрета определенным пользователям общаться с вашим сервером.

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

Изменение порта SSH по умолчанию

Первый шаг к запуску защищенного SSH-сервера – изменение значения по умолчанию, назначенного сервером OpenSSH.

Отредактируйте файл конфигурации sshd_config и найдите следующую строку.

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

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

Дополнительную информацию см. в разделе «Подключение к вашему SSH-серверу».

Отключение корневого входа на вашем SSH-сервере

По умолчанию вход в систему root доступен на вашем SSH-сервере.

Очевидно, что этого не должно быть, так как если хакеры войдут на ваш сервер с правами root, это будет полной катастрофой.

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

Чтобы отключить вход в систему root на вашем SSH-сервере, измените следующую строку

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

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

Если вас интересует аутентификация SSH на основе ключей в Debian 10, здесь доступно руководство по этому вопросу.

Перезапуск SSH-сервера для применения изменений

Чтобы изменения вступили в силу, перезапустите службу SSH и убедитесь, что она перезапущена правильно

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

Подключение к вашему SSH-серверу

Чтобы подключиться к вашему SSH-серверу, вы будете использовать команду ssh со следующим синтаксисом

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

Например, чтобы подключиться к моему собственному экземпляру, расположенному по адресу 127.0.0.1, я бы выполнил следующую команду

Вас попросят ввести пароль и подтвердить подлинность сервера.

Выход из SSH-сервера

Чтобы выйти с вашего SSH-сервера в Debian 10, вы можете нажать Ctrl + D или ввести «выйти», и ваше соединение будет разорвано.

Отключение вашего SSH-сервера

Чтобы отключить SSH-сервер в Debian 10, выполните следующую команду

Оттуда ваш SSH-сервер больше не будет доступен.

Устранение неполадок

В некоторых случаях вы можете столкнуться со многими сообщениями об ошибках при попытке настроить SSH-сервер в Debian 10.

Вот список распространенных ошибок, которые могут возникнуть во время установки.

Debian: отказ в подключении по SSH

Обычно эта ошибка возникает из-за неправильной настройки брандмауэра в Debian.

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

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

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

Если правило для SSH не задано, его можно установить, снова запустив команду iptables.

Debian: доступ по SSH запрещен

Иногда вам может быть отказано в доступе к вашему SSH-серверу с этим сообщением об ошибке «SSH-доступ запрещен» в Debian.

Решение этой проблемы зависит от используемого вами метода аутентификации.

Отказано в доступе к паролю SSH

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

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

Наконец, если вы хотите войти в систему как пользователь root, убедитесь, что вы изменили параметр «PermitRootLogin» в файле «sshd_config».

Отказано в доступе к ключу SSH

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

Если вы не знаете, как это сделать, следуйте нашему руководству по аутентификации с помощью ключа SSH в Debian 10.

Debian: не удалось найти пакет openssh-server

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

Добавьте следующую запись в файл sources.list и обновите свои пакеты.

Заключение

В этом руководстве вы узнали, как установить и настроить SSH-сервер на хостах Debian 10.

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

Если вас интересует системное администрирование Linux, у нас есть множество руководств по этому вопросу в специальной категории.

Также, как всегда, хорошее видео на эту тему от Chris Titus Tech.

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

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

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

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

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

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

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

Вы должны увидеть следующее приглашение:

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

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

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

Самый быстрый способ скопировать ваш открытый ключ на хост Debian — использовать утилиту 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 в файл в домашнем каталоге удаленной учетной записи ~/.ssh с именем author_keys .

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

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

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

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

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

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

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

Полная команда выглядит так:

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

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

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

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

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

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

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

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

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

Доступ к удаленному хосту любым доступным способом.

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

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

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

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

Это рекурсивно удаляет все «групповые» и «другие» разрешения для каталога ~/.ssh/.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В файле найдите директиву PasswordAuthentication . Это можно закомментировать. Раскомментируйте строку и установите значение «нет». Это лишит вас возможности входить через SSH, используя пароли учетных записей:

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

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

После проверки службы SSH вы можете безопасно закрыть все текущие сеансы сервера.

Демон SSH на вашем сервере Debian теперь отвечает только на ключи SSH. Аутентификация на основе пароля успешно отключена.

Заключение

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

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

Хотите узнать больше? Присоединяйтесь к сообществу DigitalOcean!

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

Читайте также: