Полезные статьи. Автоматическая SSH-авторизация по ключу. LTD Beget.

Введение

Кроме стандартной аутентификации по паролю (password/keyboard) в протоколе SSH существует также аутентификация по публичному ключу (RSA).

Для справки

RSA (

https://ru.wikipedia.org/wiki/RSA

) — криптографический алгоритм с открытым ключом. Существует публичный открытый ключ (public key) и частный секретный ключ (private key). Обычно они используются для шифрования или цифровой подписи: сообщение зашифровывается с помощью открытого ключа и расшифровывается с помощью секретного ключа. То есть прочитать сообщение может только владелец частного ключа. Сообщение можно подписать контрольной суммой с использованием частного ключа, а любой обладатель открытого ключа сможет убедиться, что сообщение было зашифровано с помощью секретного ключа.

Аутентификация с помощью RSA-ключей состоит из нескольких этапов:

Почему только RSA? Почему не DSA? К сожалению, ответа на этот вопрос я не нашел (и не особо искал). Но официально на оборудовании Cisco поддерживается только RSA.

Документ Secure Shell Configuration Guide, Cisco IOS Release 15E:

Secure Shell Configuration Guide, Cisco IOS Release 15E
Restrictions for Secure Shell Version 2 Support
Rivest, Shamir, and Adleman (RSA) key generation is an SSH server-side requirement. Devices that act as SSH clients need not generate RSA keys.

Попытка ввести данные DSA-ключа:

Cisco nexus 9.3

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

Connect to server with private key

Now it is time to test SSH key authentication. The PuTTYgen tool can be closed and PuTTY launched again.

  1. Enter the remote server Host Name or IP address under Session.
  2. Navigate to Connection > SSH > Auth.
  3. Click Browse... under Authentication parameters / Private key file for authentication.
  4. Locate the id_rsa.ppk private key and click Open.
  5. Finally, click Open again to log into the remote server with key pair authentication.

Copy public key to server

The OpenSSH public key is located in the box under Key / Public key for pasting info OpenSSH authorized_keys file:. The public key begins with ssh-rsa followed by a string of characters.

Create new public and private keys

Launch PuTTYgen from the Windows Programs list and proceed with the following steps.

  1. Under Parameters, increase the Number of bits in a generated key: to a minimum value of 2048.
  2. Under Actions / Generate a public/private key pair, click Generate.
  3. You will be instructed to move the mouse cursor around within the PuTTY Key Generator window as a randomizer to generate the private key.
  4. Once the key information appears, click Save private key under Actions / Save the generated key.
  5. Save the private key to the desktop as id_rsa.ppk.
  6. The box under Key / Public key for pasting into OpenSSH authorized_keys file: contains the public key.

Huawei usg (6000)

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

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

Mac os x

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

Requirements

  • PuTTY SSH client for Microsoft Windows
  • Remote server accessible over OpenSSH

Securecrt

В окне настроек SSH есть список Authentication. В нём необходимо увеличить приоритет PublicKey до самого высокого — сделать верхним в списке.

Затем перейдите в параметры PublicKey и выберите файл приватного ключа. Самый верхний переключатель позволяет использовать глобальные настройки секретного ключа или сеансовые настройки — другой секретный ключ (ключ не по умолчанию) — только для этого подключения.


Настраиваем глобальный публичный ключ: в меню Options → Global options → Категория SSH2.

Use existing public and private keys

If you have an existing OpenSSH public and private key, copy the id_rsa key to your Windows desktop. This can be done by copying and pasting the contents of the file or using an SCP client such as PSCP which is supplied with the PuTTY install or FileZilla.

Next launch PuTTYgen from the Windows Programs list.

  1. Click Conversions from the PuTTY Key Generator menu and select Import key.
  2. Navigate to the OpenSSH private key and click Open.
  3. Under Actions / Save the generated key, select Save private key.
  4. Choose an optional passphrase to protect the private key.
  5. Save the private key to the desktop as id_rsa.ppk.

If the public key is already appended to the authorized_keys file on the remote SSH server, then proceed to Connect to Server with Private Key.

Похожее:  php - Как авторизоваться через cURL на удаленном сайте и перейти на него будучи авторизованным? - Stack Overflow на русском

Otherwise, proceed to Copy Public Key to Server.

Возможности программы

  • Сохранение информации и конфигурационных параметров для многократного применения.
  • Работа с SSH-ключами.
  • Поддержка разных версий SSH-протокола.
  • Встроенные клиенты SCP и SFTP, используемые для различных операций с файлами. Возможности первого ограничиваются только функцией копирования.
  • Перенаправление портов через протокол SSH.
  • Поддержка xterm, ECMA-48 и VT-102.
  • Возможность соединения по IPv6.
  • Работа с алгоритмами шифрования.
  • Аутентификация через ключ, который расположен на удаленной машине.
  • Соединение через proxy.
  • Использование порта RS-232.

Генерирование rsa-пары в securecrt

SecureCRT → Tools → Create Public Key…:

Чуть-чуть теории → кнопка “Next >”:

Тип сертификата RSA/DSA → Выбираем RSA → кнопка “Next >”:

Генерирование публичных ключей на mac os x средствами операционной системы


Будем использовать встроенную утилиту ssh-keygen (man ssh-keygen).

Генерируем RSA-ключ с длиной 2048 бит с указанием имени ключа, путем к папке с местом хранения ключа:

Интерфейс

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

  •     Session позволяет задать параметры соединения, чтобы подключиться к серверу (IP-адрес, протокол и порт), а также сохранить настройки для многократного использования.
  •     Terminal: режим активации или деактивации терминала.
  •     Window:установка кодировки и изменение интерфейса.
  •     Connection отвечает за выбор шифрования, аутентификацию без ввода пароля и т. д.

Использование ssh-ключей

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

Для примера, продемонстрируем ниже, как подключиться через PuTTY, установленного в Windows 10, при помощи SSH-ключа к серверу на Ubuntu.

Использование секретного ключа для подключения по ssh

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

Мы рассмотрим настройку использования публичного ключа в самых популярных программах: SecureCRT и PuTTY.

Конвертирование rsa-ключа из формата putty private key (putty) в формат openssh (securecrt)


Чтобы использовать в SecureCRT RSA-ключи, которые сгенерированы в PuTTYgen и сохранены в формате Putty Private Key (*.ppk), экспортируем их с помощью PuTTYgen в формат OpenSSH:

  1. Запускаем PuTTYgen.
  2. Загружаем существующий RSA-ключ в формате Putty Private Key (*.ppk) → Кнопка “Load”.
  3. Сохраняем файл публичного ключа → “Save public key”.
  4. Экспортируем секретный ключ в формат OpenSSH: меню PuTTYgen → “Conversions” → “Export OpenSSH key”.
  5. Используем в SecureCRT файлы в формате OpenSSH. Файл с публичным ключом имеет расширение .pub, файл с секретным ключом не имеет расширения.

Конвертирование rsa-ключа из формата vandyke private key (securecrt) в формат putty private key (putty)

Чтобы использовать в PuTTY RSA-ключи, которые сгенерированы в SecureCRT и сохранены в формате VanDyke Private Key (файл публичного ключа — *.pub, файл секретного ключа *. (без расширения)), экспортируем их с помощью SecureCRT в формат OpenSSH, а затем с помощью PuTTYgen экспортируем в формат Putty Private Key (*.ppk):

  1. Запускаем SecureCRT.
  2. Меню “Tools” → “Convert Private Key to OpenSSH format…”
  3. Выбираем исходный файл с ключами VanDyke Private Key.
  4. Сохраняем OpenSSH-ключи с новым именем.
  5. Запускаем PuTTYgen.
  6. Загружаем существующий RSA-ключ в формате OpenSSH (*.): PuTTYgen Menu → “Conversions” → “Import key”.
  7. Сохраняем файл в формате Putty: “Save private key”.

Логирование ssh подключений по сертификату

Мне необходимо знать, когда и какой сертификат подключался к серверу. По-умолчанию такой информации чаще всего в логах не остается. Исключение я заметил только в CentOS 7. Там с дефолтными настройками ssh и уровнем логирования INFO отображается отпечаток ключа в логе:

# cat /var/log/secure

Настройка ssh на сервере для авторизации по сертификатам

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

# mkdir ~/.ssh
# chmod 0700 ~/.ssh
# touch ~/.ssh/authorized_keys
# chmod 0644 ~/.ssh/authorized_keys

В файл authorized_keys вставляйте скопированный ключ из окна puttygen. Сохраняйте и подключайтесь с помощью сертификата. В putty сертификат нужно указать в разделе Connection -> SSH -> Auth.

Похожее:  Что такое параграф в школе

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

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

Помогла статья? подписывайся на telegram канал автора

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

Применение и возможности putty

PuTTY — программа, которая позволяет установить соединение с удаленным сервером или компьютером. Программу можно также применять для реализации следующих целей:

  • удаленного администрирования;
  • взаимодействия с VPS-серверами.
  • работы с Telnet-терминалами;
  • настройки маршрутизаторов через RS-232;

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

Применение публичного ключа на оборудовании

Как на различном оборудовании привязать открытый ключ к пользователю?

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

Пример автоматического подключения из windows через putty и puttygen

Для начала скачаем с официального сайта обе утилиты отсюда.

еперь утилитой PuTTYgen сгенерируем публичный и приватный ключ. Открываем утилиту и нажимаем Generate:

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

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

ssh корне Вашего аккаунта на сервере, а приватный ключ сохраняем себе на компьютер. Для этого нажимаем на кнопку Save private key. Учтите, что приватный ключ нельзя ни показывать, ни передавать, иначе смысл безопасного подключения теряется.

Сейчас скопируем публичный ключ в файл .ssh/authorized_keys находящийся на Вашем аккаунте. Для этого открываем утилиту Putty:

Причины ошибки

  • Отсутствие сетевого подключения. 
  • Неверно указан IP-адрес. 
  • Порт не поддерживается или его значение задано неверно. 
  • Блокировка исходящего подключения антивирусом или брандмауэром.

Работа с файлами

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

  1. Сохранить тестовый файл «mydoc.txt» на диске C: вместе с исполняемым файлом для безопасного копирования — pscp.exe.
  2. Открыть командную строку Windows: «Win R → cmd → Enter».
  3. Зайти в папку с программой pscp.exe, для чего ввести команду: «cd /d c:Puttypscp.exe»*, где «c:Putty» — путь к файлу pscp.exe.
    * Путь к файлу «c:Puttypscp.exe» приведен в качестве примера.
  4. Далее можно приступать непосредственно к работе с файлом. Например, передать файл «mydoc.txt» на сервер «192.241.7.16»* со стандартным портом и пользователем Ubuntu74 в папку «root» можно командой:
    * IP-адрес «192.241.7.16» приведен только в качестве примера.

    pscp.exe mydoc.txt Ubuntu74@192.241.7.16:/root/

    Если для соединения используется нестандартный порт (например, 25), то команда примет вид:

    pscp.exe -P 25 mydoc.txt Ubuntu74@192.241.7.16:/root/
  5. Ввести пароль для Ubuntu74.

Соединение с удаленным сервером

Принцип подключения не зависит от операционной системы. Это могут быть разные версии Windows (7, 10) или популярные дистрибутивы на основе Linux — Ubuntu, CentOS, Debian.

Подключиться по SSH через PuTTY просто. Для этого нужно следовать приведенной ниже инструкции.

Создание ssh-ключей

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

1) Cоздаем открытый и закрытый ключ нашей локальной системы:

$ ssh-keygen -t rsa -q -N '' -f ~/.ssh/id_rsa

Подробнее о ключах можете посмотреть с помощью команды:

2) Если в системе есть программа ssh-copy-id, то настраиваем удаленную систему на то, чтобы она авторизовывала SSH по открытому ключу:

переходим к шагу 4

3) Если ssh-copy-id нет, то можно сделать это вручную.

Вот последовательность действий:

3.1) копируем открытый ключ на удаленную систему:

3.2) Авторизуемся на удаленном сервере:

Похожее:  Git SSH Keys | Atlassian Git Tutorial

3.3) Заносим открытый ключ нашей локальный системы в авторизованные ключи удаленной системы, устанавливаем правильные права и “убираем за собой мусор”:

remote$ [ -d ~/.ssh ] || (mkdir ~/.ssh; chmod 711 ~/.ssh) # создаем директорию и даём права
remote$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys        # добавляем открытый ключ
remote$ chmod 600 ~/.ssh/authorized_keys                  # делаем правильные права
remote$ rm ~/id_rsa.pub                                   # удаляем не нужное

4) Проверяем, что все работает, запускаем на локальном компьютере:

Создание публичного rsa-ключа


Пару RSA-ключей можно создать с помощью различных утилит: SecureCRT, PuTTYgen или любым другим ПО. При создании ключа можно задать Passphrase (защита ключа с помощью пароля).

Список источников:

  1. Википедия RSA
  2. Conversion from Putty to SecureCRT with auth. keys, SecureCRT Forum
  3. Secure Shell Configuration Guide, Cisco IOS Release 15E
  4. Скачивание PuTTYgen
  5. Huawei, официальная документация — описание различных форматов ключей для импортирования на маршрутизатор Huawei
  6. Huawei USG 6000, настройка аутентификации по публичным ключам (CLI: Example for Logging In to the CLI Using STelnet (RSA Authentication))
  7. Nexus 9000 Configuration guide SSH public key
  8. man ssh-keygen — всё про генерацию ключей на mac os x.
  9. SSH config file на MAC OS X
  10. Как указывать другой публичный ключ в параметрах SSH
  11. Как указывать сторонний публичный ключ в параметрах SSH config
  12. Как преобразовать openssh public key в формат RFC4716

Шаг №1

Для начала, нужно выполнить ряд действий на компьютере с ОС Windows.

  1. Установить  программу для генерации ключа «Putty Key Generator» и запустить ее.
  2. Задать параметр «RSA» и активировать процесс кнопкой «Generate». Нужно постоянно вводить указателем мыши в зоне окна выполнения операции для успешной генерации.
    Использование SSH-ключей PuTTY
  3. Сохранить private key, для чего скопировать текст из консоли в документ. Предварительно нужно указать тип файла «.ppk».
    Использование SSH-ключей PuTTY
  4. Затем сохраняем public key. Для этого необходимо скопировать и вставить текст из буфера обмена в любой пустой текстовый файл.
    Использование SSH-ключей PuTTY
  5. Свернуть программу.

Шаг №2

Далее необходимо перенести SSH-ключ на сервер Ubuntu, выполнив перечисленные ниже действия.

  1. Запустить программу PuTTY.
  2. Подключиться к серверу, используя его параметры для доступа (хост, порт и SSH-протокол).
  3. Командой «mkdir .ssh» создаем папку «.ssh». Затем командой «ll» проверяем наличие папки.
    Использование SSH-ключей PuTTY
  4. Прописываем права доступа для папки .ssh только для владельца, командой «сhmod 700 .ssh/».
    Использование SSH-ключей PuTTY
  5. При помощи команды «cd .ssh» переходим в системную папку «./ssh».
    Использование SSH-ключей PuTTY
  6. Создаем файл «authorized_keys», используя редактор nano, командой:
    touch authorized_keys

    Использование SSH-ключей PuTTY

  7. Прописываем права доступа для файла «authorized_keys», только для владельца, командой:
    сhmod 600 authorized_keys

    Использование SSH-ключей PuTTY

  8. Редактируем файл с помощью команды:
    cat >> authorized_keys << EOF»
  9. Добавляем ваш public key и заканчиваем редактирование файла командой «EOF».
    Использование SSH-ключей PuTTY

Шаг №3

Возвращаемся к программе PuTTY на Windows 10.

  1. Переходим в программу.
  2. Добавляем данные для подключения.
  3. Переходим во вкладку «Connection SSH Auth». Выбираем для аутентификации сохраненный файл «.ppk».
    Использование SSH-ключей PuTTY
  4. Активируем соединение при помощи нажатия «Open».
    Использование SSH-ключей

Заключение


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

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

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

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

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

[R1]rsa peer-public-key test-key2 encoding-type pem
Enter "RSA public key" view, return system view with "peer-public-key end".
NOTE: The number of the bits of public key must be between 769 and 2048.
[R1-rsa-public-key]

Рекомендуется использовать публичные ключи для замены паролей, если пароли вводятся с помощью скриптов (пример: autologon в SecureCRT).

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

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

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *