Linux несколько ssh ключей

Содержание
  1. HackWare.ru
  2. Этичный хакинг и тестирование на проникновение, информационная безопасность
  3. SSH (ч.4): Создание и настройка ключей OpenSSH
  4. Оглавление
  5. Вход в SSH без пароля (с использованием файлов ключей)
  6. Типы ключей
  7. Утилита ssh-keygen
  8. Как поменять количество битов в ключах ssh-keygen
  9. Добавление комментариев в ключи ssh-keygen
  10. Изменение паролей в ssh-keygen
  11. Показ публичного ключа из приватного
  12. Управление приватными ключами на клиенте SSH
  13. Управление публичными ключами на сервере SSH
  14. Как конвертировать .ppk ключ в OpenSSH ключ
  15. Linux несколько ssh ключей
  16. Подробные инструкции. Создание ключей SSH для аутентификации на виртуальной машине Linux в Azure и управление этими ключами
  17. Общие сведения о SSH и ключах
  18. Поддерживаемые форматы ключей SSH
  19. Использование ключей SSH и их преимущества
  20. Создание ключей с помощью ssh-keygen
  21. Простой пример
  22. Подробный пример
  23. Пример с ssh-keygen
  24. Сохраненные файлы ключей
  25. Список содержимого каталога
  26. Парольная фраза ключа
  27. Автоматическое создание ключей во время развертывания
  28. Предоставление открытого ключа SSH при развертывании виртуальной машины
  29. Установление SSH-подключения к виртуальной машине с помощью клиента SSH
  30. Использование ssh-agent для хранения парольной фразы закрытого ключа
  31. Копирование ключа на имеющуюся виртуальную машину с помощью ssh-copy-id
  32. Создание и настройка файла конфигурации SSH
  33. Дальнейшие действия

HackWare.ru

Этичный хакинг и тестирование на проникновение, информационная безопасность

SSH (ч.4): Создание и настройка ключей OpenSSH

Оглавление

Вход в SSH без пароля (с использованием файлов ключей)

Вход в SSH по публичному ключу (без пароля) очень удобен и безопасен.

Процесс настройки аутентификации по публичному ключу очень простой:

  1. Командой создаётся пара «публичный ключ — приватный ключ».
  2. Публичный ключ копируется на компьютер с сервером SSH, то есть на компьютер, к которому будет осуществляться подключение и на котором будут выполнятся команды.
  3. Затем подключение выполняется обычным способом, но ввод пароля уже не требуется.

Публичный ключ, который копируется на удалённый сервер, не является секретным. Один и тот же ключ можно использовать на разных серверах. Главное — хранить в секрете приватный ключ.

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

У программы ssh-keygen много функций и возможностей, начнём с рассмотрения процедуры генерации ключей, которая выполняется элементарно.

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

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

В результате будет создано два файла:

Первый файл нужно хранить в секрете. Второй файл нужно скопировать на удалённый компьютер, где запущен сервер SSH.

Теперь на удалённой машине нам нужно создать каталог .ssh. В предыдущей части мы уже узнали, как выполнять команды на удалённой системе по SSH. Запустите команду вида:

Теперь нам нужно скопировать содержимое файла id_rsa.pub на удалённую машину в файл

/.ssh/authorized_keys. Сделать это очень просто (не забываем менять данные на свои):

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

Типы ключей

Программа ssh-keygen можен генерировать четыре типа ключей:

  • dsa
  • ecdsa
  • ed25519
  • rsa

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

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

Эти файлы нужно держать в секрете, они должны быть доступны только для владельца.

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

Эти файлы не являются секретными, их содержимое нужно скопировать в файл

/.ssh/authorized_keys на компьютер с сервером SSH.

Утилита ssh-keygen

Мы применили ssh-keygen для генерации ключей. Кроме этого она предназначена для управления и конвертации ключей аутентификации для ssh.

Далее рассмотрены только некоторые функции этой программы, с полным перечнем опций можно ознакомиться командой:

Как поменять количество битов в ключах ssh-keygen

Для этого используется опция: -b БИТЫ

Она определяет количество бит в создаваемом ключе. Для ключей RSA минимальный размер составляет 1024 бита, а по умолчанию — 2048 бит. Как правило, 2048 бит считается достаточным. Ключи DSA должны иметь длину 1024 бита, как указано в FIPS 186-2. Для ключей ECDSA флаг -b определяет длину ключа, выбирая один из трёх размеров эллиптической кривой: 256, 384 или 521 бит. Попытка использовать битовые длины, отличные от этих трёх значений, для ключей ECDSA потерпит неудачу. Ключи Ed25519 имеют фиксированную длину, и флаг -b будет игнорироваться.

Добавление комментариев в ключи ssh-keygen

Для работы с комментариями имеется две опции:

-C комментарий

После этой опции укажите комментарий.

-c

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

Увидеть комментарий можно с помощью опции -l. Эта опция показывает отпечаток указанного файла публичного ключа. Для RSA и DSA ключей ssh-keygen пытается найти совпадающий файл публичного ключа и вывести его отпечаток. Если совместить с -v, то визуальное художественное представление ASCII будет показано после самого отпечатка:

Читайте также:  Canon ir2520 драйвер 64 bit windows

Файл ключа можно указать явно опцией -f:

Изменение паролей в ssh-keygen

Для работы с паролями имеется несколько опций:

-P парольная фраза

Этой опцией можно передать пароль, чтобы программа его не спрашивала. При смене пароля, этой опцией передаётся старый пароль.

-p

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

-N новый_пароль

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

Файл ключей нужно указать опцией -f:

Показ публичного ключа из приватного

Опция -y прочитает файл OpenSSH формата с приватным ключом и напечатает в стандартный вывод публичный ключ OpenSSH.

Также с помощью опции -f нужно указать путь до приватного ключа, из которого будет извлечён соответствующий ему публичный ключ:

Например, приватный ключ помещён в файл id_rsa, тогда команда извлечения из него публичного ключа следующая:

Вы можете столкнуться с ошибкой:

Она означает, что приватный ключ доступен для чтения кому угодно и программа ssh-keygen отказывается работать с ним по этой причине. Чтобы исправить эту ошибку, просто установите на файл с приватным ключом права доступа 600:

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

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

В конфигурационном файле клиента SSH для указания пути до приватных ключей используется директива IdentityFile. Её значения по умолчанию:

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

Можно иметь несколько директив IdentityFile в конфигурационных файлах; все эти идентификаторы будут опробованы по очереди. Множественные директивы IdentityFile добавят кандидатов в очередь для попыток (это поведение отличается от других конфигурационных директив).

Также можно настроить использование определённых идентификационных файлов для определённых хостов:

Для строки команды используется опция -i, после которой нужно указать путь до приватного ключа (файла идентификации). Значение по умолчанию такие же, как и у рассмотренной выше директивы. Опцию -i можно использовать несколько раз.

Управление публичными ключами на сервере SSH

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

По умолчанию проверяются файлы:

Каждая строка файла содержит один ключ (пустые строки, и строки начинающиеся с ‘#’ игнорируются как комментарии). Публичные ключи состоят из следующих разделённых пробелами полей: опции, тип ключа, ключ в кодировке base64, комментарий.

Поле с опциями является необязательным.

Тип ключа это “ecdsa-sha2-nistp256”, “ecdsa-sha2-nistp384”, “ecdsa-sha2-nistp521”, “ssh-ed25519”, “ssh-dss” или “ssh-rsa”.

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

Как конвертировать .ppk ключ в OpenSSH ключ

Ключ .ppk генерируется при экспорте ключей из PuTTY.

Пример файла .ppk:

Конвертация ключей из файла .ppk в формат OpenSSH в Linux

Для конвертации формата .ppk в формат OpenSSH можно использовать утилиту puttygen, которая включена в пакет Putty. Следовательно, нам нужно установить PuTTY

Linux: с вашим менеджером пакетов установите PuTTY (или более минимальный пакет PuTTY-tools):

Debian, Kali Linux, Linux Mint, Ubuntu и их производные:

Дистрибутивы на основе RPM:

Arch Linux, BlackArch и их производные:

OS X: Установите Homebrew, затем запустите

Поместите ваши ключи в какую-нибудь директорию, например, в домашнюю папку. Теперь конвертируем PPK ключи в SSH пару.

Для извлечения приватного ключа:

и для извлечения публичного ключа:

Переместите эти ключи в

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

Конвертация ключей из файла .ppk в формат OpenSSH в Windows

Откройте PuTTYgen, нажмите кнопку «Load» и выберите файл .ppk с ключами.

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

Теперь в меню перейдите в «Conversions» → «Export OpenSSH key» и сохраните приватный ключ.

Скопируйте ваш приватный ключ в файл

/.ssh/id_dsa (или id_rsa).

Источник

Linux несколько ssh ключей

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

Для этого размещаем приватный ключ в директории

/.ssh/. Называем его как-то по другому (не так как предлагает ssh-keygen при создании ключей — id_rsa), например id_rsa_github_com. Теперь нужно сообщить ssh о том, что для хоста github.com нужно использовать именно этот ключ. Редактируем файл

/.ssh/config (если его нет, то создаём), дописываем туда

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

/.ssh/id_rsa), а именно для github.com —

Параноикам на заметку: можно для каждого сервера создать свою пару ключей (просто переопределив имя ключа в диалоге в ssh-keygen) и прописать конфигурацию для каждого сервера.

PS Можно использовать другой ключ без прописывания в конфиг. Для этого нужно воспользоваться параметром командной строки -i:

Читайте также:  Горячие клавиши punto switcher windows 10

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

Источник

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

Применимо к: ✔️ виртуальные машины Linux ✔️ гибкие масштабируемые наборы

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

Сведения о создании ключей SSH и их использовании для подключения к компоненту с компьютера Windows см. в статье Использование ключей SSH с ОС Windows в Azure. Вы также можете использовать портал Azure для создания ключей SSH и управления ими при создании виртуальных машин на портале.

Общие сведения о SSH и ключах

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

Открытый ключ размещается на виртуальной машине с ОС Linux.

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

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

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

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

Поддерживаемые форматы ключей SSH

В настоящее время платформа Azure поддерживает пары из открытого и закрытого ключей SSH-2 RSA длиной не менее 2048 битов. Другие форматы ключей, например ED25519 и ECDSA, не поддерживаются.

Использование ключей SSH и их преимущества

При создании виртуальной машины Azure с открытым ключом платформа Azure копирует его (в формате .pub ) в папку

/.ssh/authorized_keys на виртуальной машине. Ключи SSH в

/.ssh/authorized_keys используются для запросов к клиенту, который должен подобрать соответствующий закрытый ключ при SSH-подключении. На виртуальной машине Linux в Azure, использующей ключи SSH для аутентификации, платформа Azure настраивает сервер SSHD таким образом, чтобы для входа можно было использовать только ключи SSH. Создавая виртуальные машины Linux в Azure с использованием ключей SSH, вы защищаете это развертывание и выполняете стандартный шаг настройки после развертывания — отключаете пароли в файле sshd_config .

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

Создание ключей с помощью ssh-keygen

Для создания ключей предпочтительно использовать команду ssh-keygen , которая доступна в служебных программах OpenSSH в Azure Cloud Shell, на узле macOS или Linux и в Windows 10. Команд ssh-keygen задает несколько вопросов, а затем записывает закрытый ключ и соответствующий открытый ключ.

Ключи SSH по умолчанию хранятся в каталоге

/.ssh . Если у вас нет каталога

/.ssh , создайте его с правильными разрешениями с помощью команды ssh-keygen .

Простой пример

Приведенная ниже команда ssh-keygen создает файлы 4096-разрядных открытого и закрытого ключей SSH RSA в каталоге

/.ssh по умолчанию. Если в текущем каталоге существует пара ключей SSH, они будут перезаписаны.

Подробный пример

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

Описание команды

ssh-keygen — программа, с помощью которой создаются ключи.

-m PEM — преобразование ключа в формат PEM.

-t rsa — тип создаваемого ключа; в данном случае создается ключ в формате RSA.

-b 4096 — количество битов в ключе; в данном случае ключ содержит 4096 битов.

-C «azureuser@myserver» — комментарий, который будет добавлен в конец файла открытого ключа для идентификации. Обычно в качестве комментария используется адрес электронной почты, но вы можете выбрать для своей инфраструктуры любой удобный метод идентификации.

/.ssh/mykeys/myprivatekey — имя файла закрытого ключа, если вы решили не использовать имя по умолчанию. В том же каталоге будет создан соответствующий файла открытого ключа с .pub в имени. Этот каталог должен существовать.

-N mypassphrase — дополнительная парольная фраза, используемая для доступа к файлу закрытого ключа.

Пример с ssh-keygen

Сохраненные файлы ключей

Enter file in which to save the key (/home/azureuser/.ssh/id_rsa):

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

Читайте также:  Самая опасная ошибка windows

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

Список содержимого каталога

Парольная фраза ключа

Enter passphrase (empty for no passphrase):

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

Автоматическое создание ключей во время развертывания

При использовании Azure CLI для создания виртуальных машин можно дополнительно создать файлы открытого и закрытого ключей SSH, выполнив команду az vm create с параметром —generate-ssh-keys . Эти ключи хранятся в каталоге

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

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

Чтобы создать виртуальную машину Linux, которая использует ключи SSH для аутентификации, укажите свой открытый ключ SSH при создании виртуальной машины с помощью портала Azure, интерфейса командной строки, шаблонов Resource Manager или других методов. При использовании портала вводится значение открытого ключа. При использовании Azure CLI создания виртуальной машины с использованием существующего открытого ключа укажите значение или расположение этого ключа, выполнив команду az vm create с параметром —ssh-key-value .

Если вам не знаком формат открытого ключа SSH, чтобы просмотреть его, выполните команду cat , заменив параметр

/.ssh/id_rsa.pub расположением файла собственного открытого ключа.

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

Если вы копируете содержимое файла открытого ключа и вставляете его на портале Azure или в шаблон Resource Manager, в этом содержимом не должно быть дополнительных пробелов или символов разрыва строки. Например, при использовании macOS, чтобы скопировать содержимое файла открытого ключа (по умолчанию это

/.ssh/id_rsa.pub ), вы можете передать его в pbcopy (или другие аналогичные программы Linux, например xclip ).

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

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

Установление SSH-подключения к виртуальной машине с помощью клиента SSH

С помощью открытого ключа, развернутого на виртуальной машине Azure, и закрытого ключа в локальной системе установите SSH-подключение к виртуальной машине, используя ее IP-адрес или DNS-имя. Замените azureuser и myvm.westus.cloudapp.azure.com в приведенной команде, указав имя пользователя администратора и полное доменное имя (или IP-адрес).

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

/.ssh/known_hosts . Если не изменять открытый ключ на виртуальной машине Azure или не удалять имя сервера из файла

/.ssh/known_hosts , запрос на подключение повторно не отображается.)

Если виртуальная машина использует политику доступа JIT, запросите доступ, прежде чем подключиться к виртуальной машине. Дополнительные сведения о политике JIT см. в статье Управление доступом к виртуальным машинам с помощью JIT-доступа.

Использование ssh-agent для хранения парольной фразы закрытого ключа

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

С помощью ssh-agent и ssh-add сообщите системе SSH о файлах ключей, чтобы вам не нужно было использовать парольную фразу в интерактивном режиме.

Затем добавьте закрытый ключ к ssh-agent с помощью команды ssh-add .

Теперь парольная фраза закрытого ключа хранится в ssh-agent .

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

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

Создание и настройка файла конфигурации SSH

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

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

Изменение файла для добавления новой конфигурации SSH

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

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

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

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

Дальнейшие действия

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

Источник

Оцените статью