Соединение Ssh linux по ключу

Обновлено: 06.07.2024

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

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

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

Как работает аутентификация с открытым ключом

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

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

Аутентификация с открытым ключом работает следующим образом:

  1. Создайте пару ключей.
  2. Передайте кому-нибудь (или серверу) открытый ключ.
  3. Позже, в любое время, когда вы захотите пройти аутентификацию, человек (или сервер) попросит вас подтвердить, что у вас есть закрытый ключ, соответствующий открытому ключу.
  4. Вы подтверждаете, что у вас есть закрытый ключ.

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

Создать пару ключей SSH

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

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

Чтобы сгенерировать пару ключей SSH, выполните команду ssh-keygen.

При запуске это будет выглядеть так:

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

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

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

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

Настройте пользователя SSH/SFTP для вашего ключа

Способ 1. Использование ssh-copy-id

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

Чтобы скопировать открытый ключ на сервер, выполните следующую команду. Обязательно замените «x.x.x.x» на IP-адрес вашего сервера, а SYSUSER — на имя системного пользователя, которому принадлежит ваше приложение.

Способ 2. Настройка вручную

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

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

Затем отредактируйте файл .ssh/authorized_keys с помощью предпочитаемого вами редактора. Скопируйте и вставьте файл id_rsa.pub в файл.

Войти, используя свой закрытый ключ

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

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

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

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

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

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

Когда вы закончите, файл .ssh/authorized_keys будет выглядеть примерно так (не копируйте его, используйте свои собственные открытые ключи):

Дополнительная информация

Извлечение открытого ключа из закрытого ключа

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

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

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

Исправление разрешений для каталога .ssh

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

Отключение аутентификации по паролю

ПРИМЕЧАНИЕ. При изменении способа доступа к SSH (порты, методы аутентификации и т. д.) настоятельно рекомендуется оставлять активный корневой сеанс SSH открытым до тех пор, пока все не будет работать должным образом. . Это гарантирует, что у вас есть способ отменить изменения, если что-то пойдет не так и вход в систему не работает должным образом.

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

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

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

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.паб .

Обычно на этом этапе лучше придерживаться местоположения по умолчанию. Это позволит вашему 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, насчитывающему более миллиона разработчиков, бесплатно! Получайте помощь и делитесь знаниями в нашем разделе "Вопросы и ответы", находите руководства и инструменты, которые помогут вам расти как разработчику и масштабировать свой проект или бизнес, а также подписывайтесь на интересующие вас темы.

Использование аутентификации с открытым ключом SSH для подключения к удаленной системе — это надежная и более безопасная альтернатива входу в систему с использованием пароля учетной записи или кодовой фразы. Аутентификация с открытым ключом SSH основана на асимметричных криптографических алгоритмах, которые генерируют пару отдельных ключей (пару ключей), один «частный», а другой «открытый». Вы держите закрытый ключ в секрете и храните его на компьютере, который используете для подключения к удаленной системе. Можно предположить, что вы можете поделиться открытым ключом с кем угодно, не ставя под угрозу закрытый ключ; вы сохраняете его в удаленной системе в каталоге .ssh/authorized_keys.

Чтобы использовать аутентификацию с открытым ключом SSH:

  • В удаленной системе должна быть установлена ​​версия SSH. Информация в этом документе предполагает, что удаленная система использует OpenSSH. Если удаленная система использует другую версию SSH (например, Tectia SSH), процесс, описанный ниже, может быть некорректным.
  • На компьютере, который вы используете для подключения к удаленному серверу, должна быть установлена ​​версия SSH. Этот документ содержит инструкции по созданию пары ключей с помощью SSH из командной строки на компьютере с Linux или macOS и с помощью PuTTY на компьютере с Windows.
  • Вы должны иметь возможность передать свой открытый ключ в удаленную систему. Следовательно, вы должны либо иметь возможность войти в удаленную систему с установленным именем пользователя и паролем/фразой-паролем, либо попросить администратора удаленной системы добавить открытый ключ в файл ~/.ssh/authorized_keys в вашей учетной записи.
  • Двухфакторная аутентификация с использованием двухэтапного входа (Duo) требуется для доступа к узлам входа в исследовательские суперкомпьютеры IU, а также для передачи файлов SCP и SFTP в эти системы. Аутентификация с открытым ключом SSH остается вариантом для исследователей, которые представляют соглашение «Аутентификация с открытым ключом SSH для систем HPS» (вход в систему HPC везде, используя ваше имя пользователя и парольную фразу IU), в котором вы соглашаетесь установить парольную фразу для своего закрытого ключа при создании Ваша ключевая пара. Если у вас есть вопросы о том, как двухфакторная аутентификация может повлиять на ваши рабочие процессы, свяжитесь с командой UITS Research Applications and Deep Learning. Справку см. в разделах Начало работы с двухэтапным входом (Duo) в IU и Справке по двухэтапному входу (Duo).

Настройте аутентификацию с открытым ключом с помощью SSH на компьютере с Linux или macOS

Чтобы настроить аутентификацию с открытым ключом с помощью SSH на компьютере с Linux или macOS:

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

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

    Имя файла: чтобы принять имя файла (и расположение) по умолчанию для вашей пары ключей, нажмите Enter или Return, не вводя имя файла.

Кроме того, вы можете ввести имя файла (например, my_ssh_key ) в приглашении, а затем нажать Enter или Return . Однако многие удаленные хосты настроены на прием закрытых ключей с именем файла и путем по умолчанию ( ~/.ssh/id_rsa для ключей RSA) по умолчанию. Следовательно, для аутентификации с помощью закрытого ключа с другим именем файла или с ключом, который не хранится в расположении по умолчанию, вы должны явно вызвать его либо в командной строке SSH, либо в файле конфигурации клиента SSH ( ~/.ssh/config ); инструкции см. ниже.

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

Ваш закрытый ключ будет сгенерирован с использованием имени файла по умолчанию (например, id_rsa ) или указанного вами имени файла (например, my_ssh_key ) и сохранен на вашем компьютере в каталоге .ssh вне вашего домашнего каталога (например, ~ /.ssh/id_rsa или ~/.ssh/my_ssh_key ).

Соответствующий открытый ключ будет сгенерирован с использованием того же имени файла (но с добавленным расширением .pub) и сохранен в том же месте (например, ~/.ssh/id_rsa.pub или ~/.ssh/my_ssh_key.pub). ).

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

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

Если в вашей учетной записи в удаленной системе уже есть файл ~/.ssh/authorized_keys, выполнение этих команд не повредит существующий каталог или файл.

Вы можете проверить содержимое ~/.ssh/authorized_keys, чтобы убедиться, что ваш открытый ключ добавлен правильно; в командной строке введите:

В качестве альтернативы, если вы предпочитаете хранить копию открытого ключа в удаленной системе, переместите ее в каталог .ssh; в командной строке введите:

  • Если ваш закрытый ключ защищен паролем, удаленная система запросит у вас пароль или парольную фразу (ваш закрытый ключ пароль/парольная фраза не передается удаленной системе):
  • Если ваш закрытый ключ не защищен паролем, удаленная система поместит вас в командную строку в вашем домашнем каталоге, не запрашивая пароль или кодовую фразу:

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

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

Например, чтобы вызвать закрытый ключ host2_key , хранящийся в каталоге ~/.ssh/old_keys, при подключении к вашей учетной записи на удаленном хосте (например, username@host2.somewhere.edu ), введите:

  1. Из параметров командной строки
  2. Из файла конфигурации клиента пользователя ( ~/.ssh/config ), если он существует
  3. Из общесистемного файла конфигурации клиента ( /etc/ssh/ssh_config )

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

Например, для подключения к host2.somewhere.edu, чтобы SSH автоматически вызывал закрытый ключ host2_key, хранящийся в каталоге ~/.ssh/old_keys, создайте файл ~/.ssh/config со следующими строками:

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

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

В качестве альтернативы вы можете использовать одну звездочку ( * ), чтобы указать глобальные значения по умолчанию для всех хостов (укажите один закрытый ключ для нескольких хостов); например:

Дополнительные сведения о файле конфигурации клиента SSH см. в файле конфигурации клиента SSH OpenSSH в Интернете или в командной строке ( man ssh_config ).

Настройте аутентификацию с открытым ключом с помощью PuTTY на компьютере с Windows 11, Windows 10 или Windows 8.x

Клиент SSH командной строки PuTTY, утилита генерации ключей PuTTYgen, агент аутентификации Pageant SSH, а также утилиты PuTTY SCP и SFTP упакованы вместе в установщик Windows, доступный под лицензией MIT для бесплатной загрузки командой разработчиков PuTTY. .

После установки PuTTY:

  1. Запустите PuTTYgen.
  2. В окне "Генератор ключей PuTTY" в разделе "Параметры":
    • В поле "Тип создаваемого ключа" выберите RSA . (В более старых версиях PuTTYgen выберите SSH2-RSA .)
    • Для параметра "Количество битов в сгенерированном ключе" оставьте значение по умолчанию ( 2048 ).
  3. В разделе "Действия" нажмите "Создать" .
  4. При появлении запроса используйте мышь (или трекпад) для перемещения курсора по пустой области под «Ключ»; это создает случайность, которую PuTTYgen использует для создания вашей пары ключей.
  5. После создания пары ключей PuTTYgen отображает открытый ключ в области "Ключ". В текстовых полях "Ключевая фраза-пароль" и "Подтвердить фразу-пароль" введите фразу-пароль для защиты секретного ключа с помощью фразы-пароля.

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

  1. В разделе "Действия" рядом с пунктом "Сохранить сгенерированный ключ" нажмите Сохранить открытый ключ .
  2. Дайте файлу имя (например, putty_key ), выберите место на компьютере для его сохранения и нажмите Сохранить .

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

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

Если в вашей учетной записи в удаленной системе уже есть ~/.ssh/authorized_keys , выполнение этих команд не повредит существующий каталог или файл.

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

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

  1. На экране сеанса:
    • В поле "Имя хоста (или IP-адрес)" введите свое имя пользователя вместе с именем хоста удаленного сервера, на котором находится ваш открытый ключ; например:
    • Убедитесь, что в разделе "Тип подключения" выбрано SSH.
  2. В списке «Категория» слева перейдите к экрану аутентификации ( Connection > SSH > Auth ). На экране аутентификации в разделе "Методы аутентификации" выберите Попытка аутентификации с помощью Pageant .
  3. Вернитесь к экрану "Сеанс" и в разделе "Сохраненные сеансы" введите имя (например, "Звезда смерти" ) и нажмите "Сохранить" .
  4. Нажмите «Открыть», чтобы подключиться к своей учетной записи в удаленной системе. Когда Pageant работает в фоновом режиме, PuTTY автоматически извлекает из Pageant незашифрованный закрытый ключ и использует его для аутентификации. Поскольку в Pageant сохранена парольная фраза вашего закрытого ключа (если применимо), удаленная система поместит вас в командную строку вашей учетной записи, не запрашивая парольную фразу.

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

В следующий раз, когда вы войдете на рабочий стол Windows, Pageant запустится автоматически, загрузит ваш закрытый ключ и (если применимо) запросит парольную фразу.

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

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

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

  • Командная строка/доступ к терминалу с правами администратора.
  • SSH включен. Следуйте нашим инструкциям по включению SSH в Linux: Ubuntu 18.04, Debian 9 или 10.
  • Локальный и удаленный сервер.

Использование ключа SSH для аутентификации

Аутентификация с открытым ключом SSH состоит из четырех этапов:

<р>1. Сгенерируйте закрытый и открытый ключи, известные как пара ключей. Закрытый ключ остается на локальном компьютере.

<р>2. Добавьте соответствующий открытый ключ на сервер.

<р>3. Сервер сохраняет и помечает открытый ключ как утвержденный.

<р>4. Сервер разрешает доступ любому, кто докажет, что владеет соответствующим закрытым ключом.

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

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

Создайте пару ключей SSH на локальном сервере с помощью OpenSSH. Основные инструкции для Linux, macOS и Windows приведены ниже.

Примечание. Более подробные руководства по ОС можно найти в наших подробных руководствах:

Linux и macOS

<р>1. Откройте терминал (CTRL+ALT+T).

<р>2. Проверьте существующие ключи с помощью:

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

Список содержимое папки .ssh

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

Если существующих ключей нет, вывод указывает, что папка не существует:

Выходное сообщение нет каталога .ssh

<р>5. Следующая команда запускает генератор ключей:

В результате выводится сообщение об успешном выполнении команды. Далее программа спрашивает, куда сохранить файл:

 Вывод команды ssh-keygen

Каталог и файл по умолчанию для хранения ключей — /home/ /.ssh/id_rsa. Если у вас есть существующие ключи, которые вы хотите сохранить, введите новое имя файла. В противном случае нажмите Enter, чтобы сохранить в папке по умолчанию. Если какие-либо ключи уже существуют в этом месте, программа перезаписывает данные.

<р>6. Наконец, введите парольную фразу для защиты ключа. Нажмите Enter и еще раз подтвердите кодовую фразу при запросе. Пароль требуется каждый раз, когда вы используете ключ для аутентификации.

 Ввод парольной фразы для ssh-keygen

<р>7. Наконец, программа выводит информацию о том, где хранятся ключи. Кроме того, цифровое и графическое представление также печатается на консоли.

 Вывод сгенерированных ключей из ssh-keygen

<р>8. Подтвердите, что ключи находятся в каталоге, проверив содержимое:

Открытый и закрытый ключ в папке .ssh

Каталог теперь содержит два файла:

  • id_rsa — это закрытый ключ.
  • id_rsa.pub — это открытый ключ.

Окна

<р>1. Используйте окно поиска Windows, чтобы найти cmd и открыть окно командной строки.

<р>2. В командной строке введите:

Команда запускает программу для генерации пары ключей.

Примечание. Команда не работает? Не волнуйтесь. Есть и другие способы генерации ключей. Попробуйте следовать нашему подробному руководству по созданию пары ключей SSH в Windows 10.

<р>3. Если вы настроили определенное место для ключей, введите путь сейчас. В противном случае нажмите Enter, чтобы сохранить ключи по пути по умолчанию.

Запуск ssh -keygen в Windows

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

<р>4. Введите парольную фразу для шифрования закрытого ключа. Повторно введите ту же фразу-пароль и нажмите Enter, чтобы завершить создание пары ключей.

Окончательный вывод ssh-keygen для Windows

Настройка одного или нескольких пользователей SSH/SFTP для вашего ключа

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

<р>1. На сервере проверьте, существует ли папка ~/.ssh:

Если каталога не существует, создайте папку:

Далее измените разрешения с помощью:

<р>2. Создайте файл с именем authorized_keys в каталоге ~/.ssh:

Изменить разрешения:

<р>3. Затем откройте файл authorized_keys с помощью текстового редактора. Скопируйте содержимое открытого ключа в файл authorized_keys. Для нескольких пользователей и ключей скопируйте каждый новый ключ в новую строку. Сохраните файл и закройте.

В Linux используйте эту команду для автоматического копирования ключа:

Вывод команды ssh-copy-id

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

Для передачи файлов по SSH существует несколько решений:

  • Используйте SSHFS для Linux, macOS или Windows
  • Используйте RSync в качестве альтернативы для Linux.

Вход

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

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

Команда вызывает запрос на ввод пароля закрытого ключа:

 Запрашивать разблокировку закрытого ключа

Наконец введите пароль, чтобы разблокировать ключ:

Вход через ssh с аутентификацией по открытому ключу

После проверки команда регистрирует вас на сервере через SSH.

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

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

  • Пару ключей SSH сложнее взломать. Поскольку большинство ключей SSH имеют длину не менее 1024 бит, что эквивалентно паролю из 12 символов, соединение является безопасным. Чтобы еще больше повысить безопасность, увеличьте количество битов при генерации ключей.
  • Содержимое ключей генерируется с помощью компьютерного алгоритма, что затрудняет его прогнозирование.
  • Доступ имеет только машина, на которой находится закрытый ключ.
  • Аутентификация с открытым ключом никогда не показывает серверу содержимое закрытого ключа. В случае компрометации сервера локальный компьютер остается в безопасности.
  • Добавление пароля к закрытому ключу добавляет многофакторную аутентификацию.

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

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