Linux разрешает доступ по ssh

Обновлено: 03.07.2024

В наши дни SSH стал стандартным методом доступа к удаленному серверу Linux.

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

Из этого руководства для начинающих вы узнаете:

  • Основная концепция SSH
  • Настройка SSH-сервера (в системе, к которой вы хотите получить удаленный доступ)
  • Подключение к удаленному серверу по SSH с клиентской машины (вашего персонального компьютера)

Абсолютные основы SSH

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

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

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

Для успешной настройки SSH необходимо:

  • Разместите компоненты сервера SSH на машине, которая действует как сервер. Это обеспечивается пакетом openssh-server.
  • Разместите клиентский компонент SSH на компьютере, с которого вы хотите подключиться к удаленному серверу. Это обеспечивается пакетом openssh-client, который предустановлен в большинстве дистрибутивов Linux и BSD.

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

Как правило, у вас есть выделенная система, работающая в качестве сервера. Например, Raspberry Pi с сервером Ubuntu. Вы включаете SSH на Raspberry Pi, чтобы вы могли контролировать и управлять устройством со своего основного персонального компьютера, используя SSH в терминале.

Используя эту информацию, давайте посмотрим, как настроить SSH-сервер в Ubuntu.

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

Настроить SSH несложно, для этого нужно выполнить всего несколько шагов.

Предпосылки

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

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

Шаг 1. Установите необходимые пакеты

Давайте начнем с открытия окна терминала для ввода необходимых команд.

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

Пакет, необходимый для запуска SSH Server, предоставляется компонентом openssh-server из OpenSSH:

Шаг 2. Проверка состояния сервера

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

Вы также можете использовать команды systemd:

Вы должны увидеть что-то вроде этого с выделенным словом Active. Нажмите q, чтобы вернуться в командную строку.

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

Шаг 3. Разрешение SSH через брандмауэр

Ubuntu поставляется с утилитой брандмауэра под названием UFW (UncomplicatedFirewall), которая представляет собой интерфейс для iptables, который, в свою очередь, управляет сетевыми правилами. Если брандмауэр активен, он может помешать подключению к вашему SSH-серверу.

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

Статус UFW можно проверить, запустив sudo ufw status .

В настоящее время наш SSH-сервер запущен и работает, просто ожидая подключения от клиента.

Подключение к удаленной системе с локального компьютера

В вашей локальной системе Linux уже должен быть установлен SSH-клиент. Если нет, вы всегда можете установить его с помощью следующей команды в Ubuntu:

Чтобы подключиться к вашей системе Ubuntu, вам нужно знать IP-адрес компьютера и использовать команду ssh, например:

Измените имя пользователя на своего фактического пользователя в системе и адрес на IP-адрес вашего компьютера с Ubuntu.

Если вы не знаете IP-адрес своего компьютера, вы можете ввести ip a в терминале сервера и проверить вывод. У вас должно получиться что-то вроде этого:

Как видно здесь, мой IP-адрес 192.168.1.111.Попробуем подключиться в формате [email protected].

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

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

И вуаля! Вы войдете в свою систему Ubuntu удаленно!

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

Закрытие соединения SSH

Чтобы закрыть соединение, вам просто нужно набрать exit, и оно сразу закроется, не запрашивая подтверждения.

Остановка и отключение SSH в Ubuntu

Если вы хотите остановить службу SSH, вам понадобится эта команда:

Это остановит службу до тех пор, пока вы не перезапустите ее или пока система не будет перезагружена. Чтобы перезапустить его, введите:

Теперь, если вы хотите отключить его запуск во время загрузки системы, используйте это:

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

Другие клиенты SSH

Инструмент ssh включен в большинство систем *nix, от Linux до macOS, но это не единственные существующие варианты, вот несколько клиентов, которые можно использовать из других операционных систем:

    — это бесплатный SSH-клиент с открытым исходным кодом, который очень популярен среди пользователей Windows. Вы также можете установить PuTTY на Ubuntu. Он полон функций и очень прост в использовании. Если вы подключаетесь к своему компьютеру с Ubuntu со станции Windows, PuTTY — отличный вариант. это удивительный инструмент для пользователей Android. Если вы находитесь в пути и вам нужен мобильный клиент для подключения к вашей системе Ubuntu, я настоятельно рекомендую попробовать JuiceSSH. Он существует уже почти 10 лет, и его можно использовать бесплатно.
  • И, наконец, Termius доступен для Linux, Windows, macOS, iOS и Android. У него есть бесплатная версия, а также несколько премиальных опций. Если у вас много серверов и вы работаете с командами, которые совместно используют соединения, то Termius — хороший вариант для вас.

Подведение итогов

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

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

Если вы считаете, что это сложно, в Справочнике по Linux есть видеокурс премиум-класса, объясняющий SSH для начинающих, а также практические занятия. Это даст вам более четкое представление о теме.

Это краткое руководство поможет вам разрешить или запретить доступ по SSH для определенного пользователя или группы в операционных системах Linux и Unix.

Введение

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

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

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

Разрешить или запретить доступ по SSH определенному пользователю или группе в Linux

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

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

1. Разрешить SSH-доступ пользователю или группе

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

Нажмите «i», чтобы войти в режим вставки, и добавьте или измените следующую строку:

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

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

Замените "sk" своим именем пользователя. Обратите внимание на пробел между "AllowUsers" и "sk". Вы должны использовать Tab вместо пробела. Значение - добавьте слово "AllowUsers" и нажмите клавишу Tab, а затем укажите имя пользователя.

Вы также можете указать более одного пользователя, как показано ниже.

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

Этот параметр позволит всем членам «корневой» группы подключаться к серверу Linux по протоколу ssh.

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

Теперь пользователю sk и всем членам группы "root" разрешено подключение по ssh к вашему серверу Linux. Остальным пользователям (кроме sk и членов группы «root») не разрешен доступ к системе через ssh.

Чтобы проверить это, попробуйте подключиться к серверу Linux по ssh от имени любого из неавторизованных пользователей:

Вы получите следующее сообщение об ошибке:

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

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

2. Запретить SSH-доступ пользователю или группе

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

Чтобы запретить доступ по SSH определенному пользователю с именем "sk", отредактируйте файл sshd_config:

Добавить/отредактировать следующую строку в файле sshd_config.

Убедитесь, что отступ пробела правильный. Не используйте пробел. Нажмите клавишу Tab и добавьте имя пользователя.

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

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

Сохраните и закройте файл конфигурации ssh. Перезапустите службу ssh, чтобы изменения вступили в силу.

Теперь попробуйте подключиться по ssh к вашему Linux-компьютеру из заблокированной учетной записи пользователя, например sk:

Вы получите следующее сообщение:

3. Отключить вход по SSH Root

Доступ по ssh с правами root считается плохой практикой с точки зрения безопасности. Поэтому настоятельно рекомендуется отключить вход пользователя SSH Root для защиты вашей системы.

Чтобы отключить вход в систему root ssh, отредактируйте файл sshd_config:

Найдите следующую строку, раскомментируйте ее и установите значение no .

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

Заключение

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

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

Насколько я понимаю, я также должен создать другую учетную запись пользователя, которая будет использоваться для выполнения задач, подобных root, с повышенными привилегиями и sudo. Я могу создать эту учетную запись с соответствующими правами, но сервер не позволит мне подключиться через SSH. Единственный способ использовать другую учетную запись для доступа к серверу — через консоль Digital Ocean. Консоль плохо взаимодействует с внешней клавиатурой моего Mac.

Что мне нужно сделать, чтобы включить SSH-подключения к другим аккаунтам? Я нашел в Интернете инструкции, в которых предлагается изменить PermitRootLogin с «нет» на «да», но это, похоже, лишает смысла использование зашифрованного ключа для управления корневым доступом. Я не могу найти инструкции, объясняющие, как разрешить аутентификацию по паролю для всех, КРОМЕ пользователя root.

Вы можете ввести !ref в этой текстовой области, чтобы быстро найти наш полный набор руководств, документации и предложений на рынке и вставить ссылку!

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

Вам нужно создать пользователя и добавить его в группу sudoers

Вы начнете с создания пользователя с именем exampleuser с помощью команды adduser при создании домашнего каталога пользователя

После того как вы создали пользователя, я рекомендую установить пароль. Для этого выполните:

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

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

Вы также можете попробовать открыть файл где-нибудь. Может быть, вы можете попробовать открыть файл в /etc, чтобы узнать, есть ли у вас разрешение на его редактирование.

Если вы не видите сообщения об отказе в доступе, все готово.

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

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

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

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

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

Оказавшись внутри, перейдите в свою домашнюю папку с помощью команды cd

Если вы следовали всему ответу, вы попадете в каталог /home/exampleuser.

Теперь вам нужно создать папку .ssh и файл author_keys, вы можете сделать это следующим образом:

Все, что осталось сделать, это скопировать ключ SSH в файл author_keys, и все готово.

С уважением, KFSys

Я пошел дальше и изменил PasswordAuthentication на yes, но я обеспокоен тем, что это может быть неправильный способ сделать это.

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

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

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

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

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

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

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

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

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

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

Шаг 1. Создание ключей SSH

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

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

На локальном компьютере создайте пару ключей SSH, введя:

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

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

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

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

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

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

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

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

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

Шаг 2. Копирование открытого ключа SSH на ваш сервер

Примечание. В предыдущей версии этого руководства были инструкции по добавлению открытого ключа SSH в вашу учетную запись DigitalOcean. Эти инструкции теперь можно найти в разделе Ключи SSH нашей документации по продукту DigitalOcean.

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

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

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

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

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

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

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

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

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

Введите пароль (ваш ввод не будет отображаться в целях безопасности) и нажмите ENTER . Утилита подключится к учетной записи на удаленном хосте, используя предоставленный вами пароль. Затем он скопирует содержимое вашего ключа ~/.ssh/id_rsa.pub в файл в домашнем каталоге удаленной учетной записи ~/.ssh с именем author_keys .

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

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

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

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

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

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

Полная команда будет выглядеть так:

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

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

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

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

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

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

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

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

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

Доступ к удаленному хосту любым доступным способом. Это может быть веб-консоль, предоставленная вашим поставщиком инфраструктуры.

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

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

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

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

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

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

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

Процесс в основном такой же:

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

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

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

В случае успеха продолжайте, чтобы узнать, как заблокировать сервер.

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

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

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

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

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

В большинстве дистрибутивов Linux для этого можно ввести следующую команду:

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

Заключение

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

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

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

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