Ssh keygen: Как сделать генерацию SSH-ключа?

Содержание

Как сделать генерацию SSH-ключа?

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

Что это такое

Использование SSH-keys позволяет осуществить подсоединение без использования пароля. При этом такой тип авторизации гораздо безопаснее, чем вход по паролю. Пароль может быть взломан, а ключи практически не поддаются расшифровке. Secure SHell-ключ состоит из открытого и закрытого ключей, которые представляют из себя длинные последовательности символов. Вы можете поместить открытый key на компьютер, а затем разблокировать его, подключившись к нему с клиентом, у которого есть закрытый key. Когда они совпадают, вы соединитесь с виртуальным сервером (no password). Также можно еще повысить уровень безопасности, если использовать кодовое выражение для защиты закрытого ключа.

Примечание:
— порт Secure SHell по умолчанию — 22;
— по протоколу SSH можно удаленно управлять файлами с помощью SSHFS (Secure SHell FileSystem).

Генерация ключа на сервере с ОС семейства Linux

Для начала необходимо сформировать пару зашифрованных ключей на клиентской машине (ваш компьютер): ssh-keygen -t rsa

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

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

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

В примере open-key теперь расположен в /root/.ssh/id_rsa.pub, закрытый ключ теперь расположен в/root/.ssh/id_rsa.

Генерация ключа на сервере с ОС семейства Windows

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

После установки запускаем PuTTYgen, в меню Type of key to generate выбираем RSA и проверяем значение поля Number of bits in generated key, оно должно быть равно 2048. Далее нажимаем Generate и свободно перемещаем курсор по экрану для выработки случайных данных.

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

В поле Key passphrase введите кодовую фразу. Использование кодовой фразы не является обязательным. Кодовая фраза имеет большие преимущества — безопасность ключа, независимо от способа его шифрования, по-прежнему зависит от того, что он никому не виден, если закрытый ключ с защитой кодовой фразой попадает в руки хакерам, они не смогут использовать ключ для входа до тех пор, пока не угадают кодовую фразу. Единственный недостаток фразы в том, что Вы должны вводить его каждый раз при подсоединении к серверу.

В поле Confirm passphrase повторите ввод фразы.

Сохраните сгенерированные ключи в любое удобное для вас место нажав соответствующие кнопки Save private key и Save public key.

Добавление ключа в Панель управления

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

Примечание: при создании сервера выберете в качестве способа подключения ssh-ключ.

 

P. S. Другие инструкции:


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

Поделиться в соцсетях:

Спасибо за Вашу оценку! К сожалению, проголосовать не получилось. Попробуйте позже

ru

191014 Санкт-Петербург ул. Кирочная, 9

+7(812)313-88-33 235 70 1cloud ltd 2021-07-28 Генерация SSH-ключа для авторизации на сервере

191014 Санкт-Петербург ул. Кирочная, 9

+7(812)313-88-33 235 70 1cloud ltd 2021-07-28 Генерация SSH-ключа для авторизации на сервере 600 auto

Страница не найдена – Information Security Squad

  • 🕵️‍♂️ Знакомимся с Maltego 29.10.2021

    Что такое Maltego ? Maltego – один из самых известных OSINT-фреймворков для персональной и корпоративной разведки. Это инструмент с графическим интерфейсом, который обеспечивает возможность сбора информации о любых лицах путем извлечения информации, общедоступной в Интернете, различными методами. Maltego также способен составлять списки DNS и собирать данные из социальных сетей в легко читаемом формате. Как мы […]

  • 🖧 Бесплатный и платный VPN – в чем разница? 29. 10.2021

    Если вы уже узнали о преимуществах использования VPN, пришло время выбрать подходящий сервис. У вас может возникнуть соблазн выбрать бесплатный VPN, который не требует абонентской платы. На бумаге это выглядит просто. Казалось бы, вы просто скачиваете приложение или устанавливаете плагин в браузер, и все ваши проблемы с конфиденциальностью решены? Не так быстро! Бесплатный VPN может […]

  • 🔐 Как установить сервер OpenSSH на Alpine Linux (включая Docker) 27.10.2021

    В этом кратком руководстве объясняется, как установить и настроить сервер и клиент OpenSSH (SSHD) в системе Alpine Linux. Кроме того, вы узнаете, как создать контейнер Docker Linux с сервером sshd на основе образа Alpine Linux. Установка сервера OpenSSH в Alpine Linux Процедура установки ssh-сервера выглядит следующим образом: Найдите пакет ssh, запустите: apk search openssh Установите […]

  • 🐉 Отключение блокировки экрана в Kali Linux 27.10.2021

    Проблема Kali Linux продолжает блокировать экран, если он не используется в течение короткого периода времени Решение Вам необходимо настроить “Light Locker”, чтобы прекратить автоматическую блокировку сессии. Шаги Нажмите на иконку в левом верхнем углу экрана (логотип Kali Linux) Во всплывающем меню нажмите “Настройки”. В следующем всплывающем меню нажмите “Менеджер питания”. Убедитесь, что открылось окно “XfcePower […]

  • 👀 Terra – инструмент OSINT для Twitter и Instagram 27.10.2021

    Установка Клонируйте репозиторий c github: $ git clone https://github.com/xadhrit/terra.git Сменим каталог: $ cd terra Требования Для установки зависимостей выполните следующие команды: $ python3 -m pip install -r requirements.txt Примечание Для учетных данных Twitter : Для использования terra вам нужны учетные данные, которые перечислены в файле twitter.yml в папке creds. Вы можете узнать больше о Twitter […]

  • Настройка ключей SSH в Ubuntu 20.04

    Введение

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

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

    Шаг 1 — Создание пары ключей

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

    По умолчанию последние версии ssh-keygen будут создавать 3072-битную пару ключей RSA, которая достаточно безопасна для большинства сценариев использования (вы можете также добавить к этой команде флаг -b 4096 для получения 4096-битного ключа).

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

    Output

    Generating public/private rsa key pair. Enter file in which to save the key (/your_home/.ssh/id_rsa):

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

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

    Output

    /home/your_home/. ssh/id_rsa already exists. Overwrite (y/n)?

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

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

    Output

    Enter passphrase (empty for no passphrase):

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

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

    Output

    Your identification has been saved in /your_home/.ssh/id_rsa Your public key has been saved in /your_home/.ssh/id_rsa.pub The key fingerprint is: SHA256:/hk7MJ5n5aiqdfTVUZr+2Qt+qCiS7BIm5Iv0dxrc3ks user@host The key's randomart image is: +---[RSA 3072]----+ | .
    | | + | | + | | . o . | |o S . o | | + o. .oo. .. .o| |o = oooooEo+ ...o| |.. o *o+=.*+o....| | =+=ooB=o.... | +----[SHA256]-----+

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

    Шаг 2 — Копирование открытого ключа на сервер Ubuntu

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

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

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

    ssh-copy-id

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

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

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

    • ssh-copy-id username@remote_host

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

    Output

    The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

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

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

    Output

    /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys [email protected]'s password:

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

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

    Output

    Number of key(s) added: 1 Now try logging into the machine, with: "ssh '[email protected]'" and check to make sure that only the key(s) you wanted were added.

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

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

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

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

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

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

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

    • cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

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

    Output

    The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

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

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

    Output

    [email protected]'s password:

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

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

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

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

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

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

    Output

    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh2TmWWv11q5O3pISj2ZFl9Hgh2JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh3xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== demo@test

    Получите доступ к удаленному хосту с использованием любого доступного метода.

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

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

    • echo public_key_string >> ~/.ssh/authorized_keys

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

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

    При этом будут рекурсивно удалены все разрешения «group» и «other» для директории ~/. ssh/.

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

    • chown -R sammy:sammy ~/.ssh

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

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

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

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

    Базовый процесс выглядит аналогично:

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

    Output

    The authenticity of host '203. 0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

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

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

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

    Шаг 4 — Отключение аутентификации с помощью пароля на сервере

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

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

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

    • sudo nano /etc/ssh/sshd_config

    Найдите в файле директиву PasswordAuthentication. Эта строка может быть прокомментирована с помощью # в начале строки. Раскомментируйте строку, удалив #, и установите значение no. После этого вы не сможете выполнять вход в систему через SSH с использованием паролей учетной записи:

    /etc/ssh/sshd_config

    . . .
    PasswordAuthentication no
    . . .
    

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

    • sudo systemctl restart ssh

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

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

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

    Заключение

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

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

    Обновите свои SSH-ключи!

    Создайте свой новый ключ с помощью

    ssh-keygen -o -a 100 -t ed25519

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

    1024-битные DSA и RSA уже устаревают

    Если вы создали свой ключ более четырех лет назад с параметрами по умолчанию, сейчас, скорее всего, работать по нему же небезопасно (если RSA <2048 бит). Хуже того, я видел, как мои коллеги, друзья и подписчики в Твиттере все еще используют ключи DSA (ssh-dss в формате OpenSSH). Это тип, похожий на RSA, но ограниченный размером 1024 бит и поэтому его рекомендуется использовать в долгосрочной перспективе. Однако в последней версии OpenSSH он явно небезопасен, и есть уважительные причины, чтобы отказаться от его использования.

    Печально то, что в большинстве сообщений и постов, которые пишут пользователи DSA, содержатся вопросы и советы о том, как повторно включить поддержку этих ключей, а не переходить к более безопасному типу. На самом деле, неразумно создавать инструкции для того, чтобы изменить конфигурацию для Pubkey Accepted Key Types или Host Key Algorithms (ключи хоста для более поздней публикации). Вместо этого просто обновите свои ключи!

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


    Определяем текущую ситуацию

    Список всех ваших ключей:

    for keyfile in ~/.ssh/id_*; do ssh-keygen -l -f "${keyfile}"; done | uniq
    • 1024-битные DSA или RSA: красный флаг. Небезопасно!
    • RSA 2048: желтый. Рекомендуется изменить.
    • RSA 3072/4096: отлично, но Ed25519 имеет некоторые преимущества.
    • ECDSA: желтый. Рекомендуется изменить.
    • Ed25519: отлично, но в абсолютной ли вы безопасности?

    Я предлагаю плавный переход

    Возможно, вы думаете … «Я уже давно использую свой ключ, я не хочу вот так резко его менять». Действительно. Но вам и не обязательно менять одно на другое! Приятно знать, что в вашей системе может быть несколько ключей, и ваш SSH-клиент автоматически выбирает подходящий для правильной системы.

    Это часть SSH-протокола, в которой может быть предложено несколько ключей, и сервер выбирает тот, который будет определять возможность доступа. Проверьте на практике, добавив несколько слов в команду SSH connect (-vvv). Также, если вы используете SSH-агент, вы можете загружать несколько ключей, и он обнаружит их все. Легко.

    Вам понравится кривая Twisted Edwards

    Наиболее распространенным является тип ключа RSA, также известный как (ssh-rsa) SSH. Он обладает отличной совместимостью, но он слишком медленный и потенциально небезопасный, если был создан с небольшим количеством бит (<2048). Мы только что узнали, что ваш SSH-клиент может обрабатывать несколько ключей, поэтому окунитесь в новейшую криптографию с более высокой критической эллиптической кривой и попробуйте очень компактный ключевой формат, который он предоставляет!

    Ключи Ed25519 коротки. Очень коротки. Если вы привыкли копировать несколько строк символов из системы в систему, вы будете приятно удивлены размером. Открытый ключ составляет всего около 68 символов. Благодаря этому он намного быстрее в аутентификации по сравнению с безопасным RSA (3072+ бит).

    Генерация ключа Ed25519 выполняется с использованием (-t ed25519) опции для команды ssh-keygen.
    Ed25519 — эталонная реализация для EdDSA с использованием кривых Twisted Edward.

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

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

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

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

    Применяйте (ssh-keygen) (-o) опции для другого формата ключа RFC4716 и современной деривации ключей, работающей на bcrypt. Используйте (-a ) опцию для () количества раундов. Кроме того, похоже, что при создании ключа Ed25519 также подразумевается (-o) опция.

    Команды Open SSH на самом деле не объясняют «новый» формат. Я нашел очень полезной следующую статью: «new open ssh key format and bcrypt pbkdf» на www.tedunangst.com.

    Создайте свой новый секси-ключ Ed25519

    Protip: используйте эту же кодовую фразу для всех ваших типов ключей и наслаждайтесь.

    ssh-keygen -o -a 100 -t ed25519
    Generating public/private ed25519 key pair.
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /home/gert/.ssh/id_ed25519.
    Your public key has been saved in /home/gert/.ssh/id_ed25519.pub.
    The key fingerprint is:
    SHA256: [...] [email protected]
    The key's randomart image is: [...]

    Обратите внимание на строку:

    'Your identification has been saved in /home/gert/.ssh/id_ed25519'

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

    SSH-клиент с поддержкой нескольких ключей

    Все ключи, доступные изначально, будут автоматически идентифицированы клиентскими приложениями SSH, включая SSH-агент, через ssh-add. Итак, если вы пользовались приложением, таким как ssh / scp / rsync, прежде чем выполнить…

    ssh [email protected]

    Будет предложено несколько открытых ключей для сервера, и сервер будет запрашивать подтверждение владения для соответствующей записи для аутентификации. Ваше ежедневное использование команды (ssh-add) не изменится, как и автообнаружение ключа Ed25519:

    ssh-add
    Enter passphrase for /home/gert/.ssh/id_rsa:
    Identity added: /home/gert/.ssh/id_rsa ([email protected])
    Identity added: /home/gert/.ssh/id_ed25519 ([email protected])

    Он не только открыл оба ключа, но и загрузил их, введя одну кодовую фразу (потому что это одно и то же)!

    Мы достигли очень важной цели. Без каких-либо изменений в стандартной работе мы можем медленно изменять существующую конфигурацию на удаленных хостах, чтобы принять ключ Ed25519. Тем временем ключ RSA по-прежнему будет работать. Отлично, не правда ли?!

    Изменение или установка кодовой фразы

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

    Повторите эту операцию для всех ваших файлов с ключами, чтобы обеспечить новый формат с 100 раундами BDF с Bcrypt:

    ssh-keygen -f ~/.ssh/id_rsa -p -o -a 100

    Обновите текущий ключ RSA

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

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

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

    $ mv ~/.ssh/id_rsa ~/.ssh/id_rsa_legacy
    $ mv ~/.ssh/id_rsa.pub ~/.ssh/id_rsa_legacy.pub
    $ ssh-keygen -t rsa -b 4096 -o -a 100

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

    ssh-add ~/.ssh/id_rsa ~/.ssh/id_rsa_legacy ~/.ssh/id_ed25519

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

    Поддержка программного обеспечения для Ed25519

    Поддержка доступна с OpenSSH 6.5 и хорошо совместима с операционными системами Unix для рабочих станций. Ubuntu 14.04+, Debian 8+, CentOS / RedHat 7+ и т. д. все это уже поддерживают. Некоторым программным средствам, такими, как пользовательские ключевые агенты для персональных компьютеров, могут не нравиться новые ключи по нескольким причинам (см. ниже, например, о Gnome-keyring).

    Между прочим, Github тоже неплохо работает. Однако Launchpad и Gerrit-код, похоже, требуют ключей RSA. PuTTY на Windows? Смотри ниже.

    Мой Gnome-keyring больше не работает

    Gnome-keyring, как минимум, используется в Ubuntu Unity, при этом не умеет читать новые ключи формата RFC4716, но сообщает об успехах. Это раздражает. Я бы рекомендовал отключить брандмауэр Gnome для использования SSH-агента и вместо этого использовать простой агент OpenSSH.

    Я использую Windows с PuTTY

    Извините, я не использую PuTTY, но могу дать подсказку. Эта страница предлагает поддержку Ed25519 с версии конца 2015 года

    Является ли это идеальной защитой для ключей SSH?

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

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

    Допустим, Вам необходимо настроить беспарольный вход по SSH, SCP или SFTP на удаленный сервер remote. org.ua под пользователем user. Если имя Вашего локального пользователя совпадает с удаленным, то user@ везде можно опустить.

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

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

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

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

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

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

    $ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

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

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

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

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

    $ scp ~/.ssh/id_rsa.pub  [email protected]:~

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

    $ ssh [email protected]

    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) Проверяем, что все работает, запускаем на локальном компьютере:

    $ ssh user@remoute. org.ua

    Пример автоматического подключения из Windows через Putty и PuTTYgen

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

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

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

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

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

    Вводим логин пользователя (он совпадает с именем от личного кабинета):

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

    После этого полностью копируем публичный ключ из области, выделенной красным цветом (на слайде выше), в консоли пишем cat >> .ssh/authorized_keys << EOF, нажимаем Enter, затем вставляем публичный ключ, еще раз нажимаем Enter, пишем EOF и еще раз жмем Enter:

    Отлично, ключ добавлен! Теперь проверим нашу беспарольную аутентификацию. Для этого открываем еще раз Putty, переходим во вкладку Auth затем нажимаем на Browse, выбираем наш приватный ключ, который мы сгенерировали и сохранили себе:

    Теперь перемещаемся во вкладку Session и, также как ранее, вводим адрес нашего сервера, в нашем случае — это matrix. beget.com затем нажимаем Open:

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

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

    Удачной работы! Если возникнут вопросы — напишите нам, пожалуйста, тикет из Панели управления аккаунта, раздел «Помощь и поддержка».

    Простое копирование ssh ключей между серверами c использованием утилиты ssh-copy-id

    Традиционно администраторы решают задачу копирования ssh ключей между серверами путем копирования содержимого файла /root/.ssh/id_rsa.pub с сервера server1 на server2 в файл /root/.ssh/authorized_keys. Копируют обычно из одного терминала в другой, но есть более изящное решение — это использование утилиты ssh-copy-id, которая позволяет скопировать содержимое id_rsa. pub сервера источник (в нашем случае server1) на сервер приемник (server2) в нужный нам authorized_keys не открывая консоль сервера приемника (server2).

    Исходные данные: 2 сервера с Debian 8 (server1 и server2).
    Задача: Организовать вход по ssh ключу с сервера server1 на server2 с правами root.

    Итак сделаем все по порядку:

    1. Генерируем публичный открытый и закрытый ключи, под пользователем root на server1:

    ssh-keygen -t rsa

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

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

    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa): <-- ENTER
    Created directory '/root/.ssh'.
    Enter passphrase (empty for no passphrase): <-- ENTER
    Enter same passphrase again: <-- ENTER
    Your identification has been saved in /root/. ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.

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

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

    cat ~/.ssh/id_rsa.pub

    В ответ увидим примерно:

    ssh-rsa AAAAB3Nz.....ywWmpl [email protected]
    

    Теперь нужно передать публичный ключ id_rsa.pub пользователя root на server2, для этого на server1 выполняем:

    ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

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

    Важное уточнение: Чтобы передать публичный ключ на server2 под root нужно чтобы пользователю root было разрешен вход по ssh на server2, обычно при базовой установке Debian/Ubuntu вход под root по ssh разрешен, это настраивается директивой PermitRootLogin в файле /etc/ssh/sshd_config

    PermitRootLogin yes — Вход под root по ssh разрешен.

    PermitRootLogin no — Вход под root по ssh запрещен.

    PermitRootLogin without-password — Вход под root по ssh разрешен только по ssh ключам.

    PermitRootLogin forced-commands-only — Вход под root по ssh разрешен только по ssh ключам и только для выполнения заранее определенной команды, сама команда прописывается в /root/.ssh/authorized_keys в формате:

    command="rsync" ssh-rsa AAAAB3N……. [email protected]

    После изменения PermitRootLogin не забудьте перезапустить службу sshd командой:

    service sshd restart

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

    Защита с помощью SSH ключей

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

    Брайен Хатч, перевод Владимир Куксенок

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

    SSH ключи как защита от атак «человек посередине»

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

    Одна из проблем, связанная с этими старыми протоколами, кроме того, что они передают всю вашу информацию открытым текстом, состоит в том, что данные протоколы уязвимы к атаке «человек посередине». Атакующий, имеющий доступ к промежуточной сети, может перехватить ваши пакеты, сохранить их, а затем отослать непосредственному адресату. Еще хуже, он может перезаписать ваши пакеты, например, заменив ls -la mydir на rm -r mydir или отправить вам протрояненный файл вместо оригинала через ваш перехваченный FTP сеанс. Так как в этих протоколах отсутствует возможность наверняка знать, с кем осуществляется связь, возможно большое количество различных уловок.

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

    Проверка подлинности хоста это не уникальность SSH. В любом приличном защищенном протоколе есть набор способов верификации. Например, давайте рассмотрим HTTPS, зашифрованную SSL/TLS версию HTTP. Он также предоставляет возможность верификации хоста почти таким же способом, как и SSH. Проверка подлинности хоста средствами HTTP представляет собой следующее. Я возьму на себя смелость, говоря SSL подразумевать SSH, чтобы была ясность в сравнении ниже. [сноска 2]

    1. Клиент (веб браузер) соединяется с сервером (HTTPS веб сервер на 443 порту)
    2. Сервер предоставляет свой открытый ключ (Сертификат X509)
    3. Сервер предоставляет некое математическое число, доказывающее, что у сервера есть доступ к закрытому ключу, связанному с открытым ключом.
    4. Браузер проверяет, подписан ли открытый ключ доверенным Certificate Authority (такими как Verisign, Thawte или другими).
    5. Браузер проверяет, соответствует ли значение CN (X509 Common Name) сертификата сервера имени хоста, которое вы использовали для соединения с сервером. Т.е. если соединились с https://www.example.com, значение CN сертификата должно быть www.example.com.
    Все эти шаги присутствуют и в SSH, за исключением одного: нет никакого Certificate Authority. [сноска 3] Вместо этого, ‘authority’ это ваши личные и глобальные файлы конфигурации, которые мы рассмотрим позже.

    SSH ключи в действии

    Давайте посмотрим, как SSH осуществляет эти шаги, создав SSH соединение с компьютером, к которому мы никогда не подключались прежде:
    
      $ <b>ssh ssh-server.example.com</b>
      The authenticity of host 'ssh-server.example.com (12.18.429.21)' 
    can't be established.
      RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.
      Are you sure you want to continue connecting (yes/no)?
    
    Ответим «да», и подключение продолжится:
    
      $ <b>ssh ssh-server.example.com</b>
      Are you sure you want to continue connecting (yes/no)? yes
      
      Warning: Permanently added 'ssh-server. example.com,12.18.429.21' 
    (RSA) to the list of known hosts.
      
      Password: <b>(введите пароль)</b>
    
      
      ssh-server.example.com $
    
    На начальном этапе установления связи сервер предоставил клиенту свой ключ. Магическое математическое число доказывающее, что сервер имеет доступ к этому ключу, не упоминалось выше, что показывает отсутствие связанных с ним ошибок.

    Так как мы подключаемся к этой машине впервые, и SSH не работает по принципу третьего доверенного лица, такого как Certificate Authorities в мире SSL/TLS, вся работа, связанная с управлением ключами, лежит на вас. Ваш клиент показывает отпечаток ключа (key fingerprint), простую для чтения строку чисел, которую вы можете использовать для проверки ключа вручную, что мы и сделаем позже. Если вы отвечаете «Да, отпечаток правильный», ваш SSH клиент продолжит аутентификацию, дав вам возможность ввести ваш пароль и приступить к работе.

    Когда вы выше ответили «да», ваш SSH клиент сохранил ключ сервера в файле $HOME/. ssh/known_hosts. Это файл фактически является вашим личным Certificate Authority — списком ключей всех SSH серверов, с которыми вы работаете. Давайте посмотрим на последнею строку этого файла, которая была только что добавлена вами:
    
      $ <b>tail -1 $HOME/.ssh/known_hosts</b>
      ssh-server.example.com,12.18.429.21 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEA0
        6jFqviLMMJ/GaJNhGx/P6Z7+4aJIfUqcVjTGQasS1daDYejcfOAWK0juoD+zS3BsGKKYKPA
        5Gc5M8v+3NHLbPn1yTpDBgl6UzA0iiMPCbwnOLx61MrBTk+/qJI9kyDaJf4LEY6Chx4IJP0
        ZN5NmAlCtXQsca3jwFAF72mqPbF8=
    
    
    (Я взял на себя смелость перенести и выровнять эту строку для удобства просмотра)

    Каждая запись в known_hosts является большой строкой с тремя или больше пробелами, отделяющими поля следующим образом:

    1. Одно или несколько имен серверов или IP адресов, разделенных запятыми.
    2. Тип ключа (описан ниже).
    3. Непосредственно открытый ключ (закодированный в пределах диапазона символов ASCII).
    4. Любые дополнительные комментарии (не показаны в выводе выше)
    В следующий раз, когда вы соединитесь с этой машиной, ваш SSH клиент самостоятельно пройдет все стандартные шаги верификации удаленной машины и позволит вам ввести пароль:
    
      $ <b>ssh ssh-server.example.com</b>
    
      Password: <b>(введите пароль)</b>
    
    Заметьте, в этот раз он вообще не просил вас проверить отпечаток ключа. Причина в том, что ключ находится в вашем файле $HOME/.ssh/known_hosts. Фактически SSH клиент проверяет на наличие ключа несколько мест:
    1. Глобальный файл, обычно /etc/ssh/ssh_known_hosts. Этот путь может быть изменен редактированием параметра GlobalKnownHostsFile в конфигурационном файле ssh (обычно это /etc/ssh/ssh_config).
    2. Файл пользователя, обычно $HOME/.ssh/known_hosts. Этот путь может быть изменен редактированием параметра UserKnownHostsFile в конфигурационном файле ssh.
    Как вы должны были заметить, когда мы впервые соединились с хостом и получили его открытый ключ, было сохранено имя хоста (ssh-server.example.com) и IP адрес (12.18.429.21), поэтому теперь мы можем использовать любое из этих значений для соединения, и в обоих случаях будет возможно извлечение и подтверждение подлинности ключа из вашего файла known_hosts.

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

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

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

    Если вышеописанный способ вам не доступен, проверить ключ системы, в которую вы вошли, можно следующим образом. Открытый ключ обычно доступен в директории /etc/ssh/, так что после входа в систему вы можете проверить отпечаток ключа (используя ssh-keygen), который вы приняли во время входа в систему. (ssh-keygen также используется для создания SSH ключей и Identities/PubKeys, которые мы обсудим позже.)

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

    
      $ <b>ssh ssh-server.example.com</b>
    
      The authenticity of host 'ssh-server.example.com (12.18.429.21)' 
      can't be established.
      RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.
      Are you sure you want to continue connecting (yes/no)? yes
    
      Warning: Permanently added 'ssh-server. example.com,12.18.429.21' 
    (RSA) to the list of known hosts.
      
      Password: <b>(enter password)</b>
      
      ssh-server.example.com $ cd /etc/ssh
      ssh-server.example.com $ ls *.pub
      ssh_host_dsa_key.pub  ssh_host_rsa_key.pub ssh_host_key.pub
      
      ssh-server.example.com $ ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub
      1024 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d ssh_host_rsa_key.pub
    
    Выше мы видим, как пользователь принимает ключ, входит в систему, а затем проверяет ключ вручную с помощью ssh-keygen. Если отпечатки совпадают, вы можете с большой вероятностью быть уверены [сноска 4], что вы подключились к правильному серверу, даже при условии, что вы заранее не знали открытый ключ.

    Проверка ключа

    SSH имеет три способа реагирования на неопознанный или измененный ключ, основанных на значении переменной StrictHostKeyChecking:
    StrictHostKeyChecking=no
    Это самое небезопасное значение, разрешающее соединение с сервером вслепую. Если ключ сервера не присутствуют на локальном компьютере или ключ был изменен, он добавляется автоматически без каких-либо вопросов, всего лишь выдав предупреждение [сноска 5].
    Ставить этот режим не очень хорошая идея.
    StrictHostKeyChecking=ask
    Это параметр по умолчанию. Если у вас нет ключа сервера, вам будет показан отпечаток и запрошено подтверждение, как показано в примере выше. Если вы соединитесь, и ключи не совпадут, ваш вход в систему будет приостановлен и вам будет выдана информация, где в known_hosts находится конфликтующий ключ:
    
    $ <b>ssh -o stricthostkeychecking=ask ssh-server.example.com</b>
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
    Someone could be eavesdropping on you right now (man-in-the-middle attack)!
    It is also possible that the RSA host key has just been changed. 
    The fingerprint for the RSA key sent by the remote host is
    23:00:20:83:de:02:95:f1:e3:34:be:57:3f:cf:2c:e7.
    Please contact your system administrator.
    Add correct host key in /home/xahria/.ssh/known_hosts to get 
            rid of this message.
    Offending key in /home/xahria/.ssh/known_hosts:8
    RSA host key for localhost has changed and you have 
           requested strict checking.
    Host key verification failed.
    
    StrictHostKeyChecking=yes
    Эта самая безопасная, возможно даже недружелюбная установка. Если у вас нет ключа сервера, вы вообще не сможете войти в систему:
    
      $ <b>ssh -o 'StrictHostKeyChecking=yes' ssh-server.example.com</b>
      No RSA host key is known for localhost and you have 
    requested strict checking.
      Host key verification failed.
    
    Если у вас есть ключ, но он не совпадает с ключом сервера, вы получите ошибку, такую же, как и при StrictHostKeyChecking=ask.

    Почему ключ может измениться?

    Есть несколько причин, по которым ключ может измениться. В случае хакерской активности, сообщение об ошибке, которое вы увидите во время верификации ключа, это вся информация, которую вы получите до входа в систему. Однако есть некоторые другие факторы, не связанные со злонамеренной активность, которые могут быть причиной несоответствия ключей.
    • Было обновлено либо клиентское, либо серверное ПО, которое использует SSHV2, вместо прежнего SSHV1 [сноска 6].
    • Машина была переустановлена с тем же самым именем хоста, но исходные ключи не были восстановлены. После того как они будут созданы снова, они, конечно, не будут соответствовать вашему файлу known_hosts.
    • У компьютера, с которым вы хотите соединиться, было изменено DNS имя или IP адрес, или этот компьютер был заменен на новый.

    Типы ключей

    SSH поддерживает два основных протокола — SSHv2 и SSHv1 [сноска 7].

    Старый протокол SSHv1 основан на алгоритме асимметричного шифрования RSA, тогда как более новый протокол SSHv2 поддерживает RSA и алгоритм aсимметричного шифрования DSA. SSH сервер может использовать один из трех типов ключей: SSHv1 RSA ключи, SSHv2 RSA ключи, или SSHv2 DSA ключи. Я буду называть их rsa1, rsa и dsa ключи соответственно, поскольку эта терминология используется в утилитах OpenSSH.

    SSH ключ создается с помощью команды ssh-keygen [сноска 8]. Вероятнее всего, когда SSH был установлен на вашу машину, программа инсталляции или стартовый скрипт создали их для вас.

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

    
      # Which protocol(s) should we support?
      Protocol 2,1
      
      # HostKey for protocol version 1  
      HostKey /etc/ssh/ssh_host_key
      
      # HostKeys for protocol version 2
      HostKey /etc/ssh/ssh_host_rsa_key
      HostKey /etc/ssh/ssh_host_dsa_key
    
    Если вы собирали SSH из исходников, вы можете создать эти три ключа с помощью ssh-keygen:
    
      # <b>ssh-keygen -t rsa /etc/ssh/ssh_host_rsa_key</b>
      # <b>ssh-keygen -t dsa /etc/ssh/ssh_host_dsa_key</b>
      # <b>ssh-keygen -t rsa1 /etc/ssh/ssh_host_key</b>
    
    
    Программа ssh-keygen создает по два файла для каждого ключа. Первый содержит и закрытый и открытый ключ, а второй только открытый ключ. Таким образом, впервые запустив ssh-keygen, вы создадите файлы /etc/ssh/ssh_host_rsa_key и /etc/ssh/ssh_host_rsa_key.pub. Нет никаких причин скрывать открытый ключ, но закрытый ключ должен быть надежно скрыт, так как он не защищен никаким паролем (passphrase) [сноска 9]. К счастью, ssh-keygen устанавливает параноидальные разрешения на доступ к файлу.

    Если вы сомневаетесь, что первый файл, не оканчивающийся на .pub, содержит закрытый ключ, или по каким-то причинам вы потеряли открытий ключ, вы всегда можете восстановить его с помощью той же самой команды ssh-keygen:

    
      $ <b>ls -1 /etc/ssh/ssh_host_rsa_key*</b>
    
      /etc/ssh/ssh_host_rsa_key
      /etc/ssh/ssh_host_rsa_key.pub
      
      $ <b>cat /etc/ssh/ssh_host_rsa_key.pub</b>
      ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEApCyGZbDdzrRdszzQUZI+siu3
        /mUI57nmjzKwHS7M27AoMZNJ6yIDTn5J3/MVCDJAeyB53LvIFFD9Kzp6P9
        fhNhPm8+b0joJ5Wrn+YfUnt2moI3lkAzQUZI+siu3/mUI57nmjzKwH
      
      $ <b>ssh-keygen -y -f  /etc/ssh/ssh_host_rsa_key</b>
      ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEApCyGZbDdzrRdszzQUZI+siu3
        /mUI57nmjzKwHS7M27AoMZNJ6yIDTn5J3/MVCDJAeyB53LvIFFD9Kzp6P9
        fhNhPm8+b0joJ5Wrn+YfUnt2moI3lkAzQUZI+siu3/mUI57nmjzKwH
    
    Есть ли какие-либо причины использования одного типа ключа, а не другого? Нет. Ключ rsa обычно бывает несколько быстрее с математической точки зрения, но для больших возможностей взаимодействия лучше включать оба. Оба алгоритма не запатентованы [сноска 10], поэтому насчет этого вы можете не беспокоиться. Если вам нужна поддержка SSHv1, у вас должен быть ключ rsa1.

    Советы

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

    Используйте глобальный файл известных хостов (/etc/ssh/ssh_known_hosts), содержащий все машины, с которыми соединяются ваши пользователи. Если вы выделите время для проверки этих ключей, вам не нужно будет полагаться на пользователей. Удостоверьтесь, что вы получаете все три типа ключа, rsa, dsa, и rsa1. Также, когда вам нужно будет изменить ключ (например, машина была переустановлена, и вы забыли сохранить старые ключи), у вас будет только один файл, который нужно обновить.

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

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

    Вот очень простой скрипт, соединяющийся с SSH сервером и добавляющий все три возможных ключа в файл. Он может быть полезен для создания вашего глобального файла ssh_known_hosts. Обратите внимание, что здесь не происходит верификации ключа, это вам придется сделать самим.
    
    
       #!/bin/sh
       #
       # add-known-hosts
       # Add all possible SSH keys for the specified hosts to the file
       # specified.  It's your responsibility to be sure that the keys
       # found are, in fact, valid.
       #
       # Copyright 2003, Brian Hatch <bri [@] ifokr. org>
       #  Released under the GPL
       
       KNOWN_HOSTS=./ssh_known_hosts
       SSH_ARGS="-o StrictHostKeyChecking=no -o UserKnownHostsFile=$KNOWN_HOSTS"
       
       if [ $# -lt 1 ] ; then
               echo "Usage: $0 hostname [hostname ...]" >&2
               exit 1;
       fi
       
       for host in "$@"
       do
               ssh $host $SSH_ARGS -1 echo ''           ssh $host $SSH_ARGS -
    o'HostKeyAlgorithms=ssh-rsa' echo ''
               ssh $host $SSH_ARGS -o'HostKeyAlgorithms=ssh-dss' echo ''
       done
    

    Опции настройки

    Есть несколько различных опций настройки, которые могут быть вам полезны, в зависимости от того, как вы используете SSH. Они могут быть описаны в глобальном конфигурационном файле SSH, обычно это /etc/ssh/ssh_config, или в пользовательской конфигурации, обычно находящейся в $HOME/.ssh/config. Смотрите страницу документации (manpage) ssh_config для большей информации.
    • StrictHostKeyChecking: Определяет, нужно ли при игнорировании ошибки во время соединения, связанной с ключом хоста, завершить работу сразу или спросить пользователя, хочет ли он продолжить работу.
    • CheckHostIP: Определяет, нужно ли проверять IP адрес сервера в файле known_hosts.
    • NoHostAuthenticationForLocalhost: Выключает проверку ключа для локальной машины. Может быть полезно, если вы настраиваете переадресацию трафика с порта SSH на удаленные машины, например ssh -p 9999 localhost, но вам нужно работать на локальной машине. Для этого лучше использовать HostKeyAliases.
    • HostKeyAlias: Эта опция позволяет указать псевдоним, который будет использоваться в командной строке вместо реального имени хоста, при поиске соответствия в файле known_hosts. Особенно это полезно для команд, использующих ProxyCommands для соединения, или при использовании различных портов на компьютере, которые переадресуют трафик на различные SSH сервера, находящиеся, например, за межсетевым экраном.
    • HostKeyAlgorithms: Алгоритм, который вы предпочитаете, RSA или DSA для второй версии протокола. По умолчанию это RSA, и если вы хотите, можете также следовать этой установке.

    Сноски

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

    [сноска 2] Имейте ввиду, что это описание правильно для любого SSL/TLS совместимого сервиса с включенной авторизацией — это не должен быть HTTPS, а, например, может быть MySQL или LDAP через SSL.

    [сноска 3] Существуют патчи к OpenSSH, позволяющие производить аутентификацию по стандарту X509, поэтому вы можете использовать эту модель, если хотите.

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

    [сноска 5] Это действительно так, однако, отключая проверку пароля, вы по крайнее мерее должны использовать SSH Identities/PubKeys, Challenge/Response или какие-нибудь другие формы аутентификации, которые не могут быть повторно использованы атакующим.

    [сноска 6] Обратное возможно, но маловероятно.

    [сноска 7] SSHv1 считается менее безопасным, чем SSHv2. Если вам не нужно использовать клиентское ПО, поддерживающее только старый протокол SSHv1, в целях безопасности лучше всего будет включить поддержку только SSHv2 на вашем сервере. Строчка Protocol в файле /etc/ssh/sshd_config должны выглядеть следующим образом:

    
       # Protocol 2,1 would allow either SSHv1 or SSHv2.
       # Let's be paranoid and only support the later.
       Protocol 2
    
    [сноска 8] ssh-keygen используется и для создания SSH Identities/PubKeys. Действительно нет никакой разницы между ключом пользователя и хоста.

    [сноска 9] Закрытый ключ не должен быть защищен паролем, чтобы sshd мог запуститься без вмешательства администратора после перезагрузки.

    [сноска 10] Срок патента на алгоритм RSA истек в 2000 году.

    Использование ssh-keygen и совместного использования для аутентификации на основе ключей в Linux

    Если вы когда-либо работали системным администратором (или захотите в будущем), вам необходимо хорошо разбираться в SSH. Я не буду вдаваться в общую концепцию, поскольку она уже была изложена здесь, в разделе «Включить системного администратора». Однако я хочу найти потенциально лучший способ его использования. SSH — единственный наиболее часто используемый протокол удаленного доступа в мире. Следовательно, имеет смысл попытаться улучшить его использование в максимально возможной степени.

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

    Технологическая закалка

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

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

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

    ssh-keygen без пароля

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

      [пользователь @ хост ~] $ ssh-keygen
    Создание пары ключей открытого и закрытого типа RSA.
    Введите файл, в котором нужно сохранить ключ (/home/user/.ssh/id_rsa): Введите
    Создан каталог '/ home / user /. ssh '.
    Введите кодовую фразу (пусто, если кодовая фраза отсутствует): Enter
    Введите ту же парольную фразу еще раз: Enter
    Ваш идентификатор был сохранен в /home/user/.ssh/id_rsa.
    Ваш открытый ключ сохранен в /home/user/.ssh/id_rsa.pub.
    Ключевой отпечаток пальца:
    SHA256: veutUNPio3QDCyvkYm1oIx35hmMrHpPKWFdIYu3HV + w [email protected]
    Изображение ключа randomart:
    + --- [RSA 2048] ---- +
    | |
    | . . |
    | о о о |
    | . = о о. |
    | о + = S E. |
    | ..O o + * + |
    |. +% O. + Б. |
    | = * oO.. + * |
    | ++. . +. |
    + ---- [SHA256] ----- +  

    По умолчанию ваши закрытый и открытый ключи сохраняются в файлах ~ / .ssh / id_rsa и ~ / .ssh / id_rsa.pub соответственно.

    ssh-keygen с паролем

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

      [пользователь @ хост ~] $ ssh-keygen -f .ssh / ключ-с-паролем
    Создание пары ключей открытого и закрытого типа RSA.
    Введите кодовую фразу (пусто, если кодовая фраза отсутствует):
    Введите ту же парольную фразу еще раз:
    Ваш идентификатор был сохранен в. ssh / ключ-с-паролем.
    Ваш открытый ключ сохранен в .ssh / key-with-password.pub.
    Ключевой отпечаток пальца:
    SHA256: s7GGB7EyHUry4aOcNPKmhNKS7dl1YsMVLvFZJ77VxAo [email protected]
    Изображение ключа randomart:
    + --- [RSA 2048] ---- +
    | . + = .o ... |
    | = B XEo o. |
    | . o O X = .... |
    | = = = B = о. |
    | = + * * S. |
    |. + = о +. |
    | +. |
    | |
    | |
    + ---- [SHA256] ----- +  

    Используйте опцию -f , чтобы указать файл, в котором будут сохранены ключи.В приведенном выше примере закрытый и открытый ключи хранятся в файлах /home/user/.ssh/key-with-pass и /home/user/.ssh/key-with-pass.pub соответственно. .

    Предупреждение

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

    После создания ключей они сохраняются в каталоге /user/home/.ssh/ со следующими разрешениями:

    • Приватный ключ — 600
    • Открытый ключ — 644

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

    Ключи общего доступа

    Для того, чтобы все это работало, вам необходимо поделиться своим открытым ключом с удаленными машинами, к которым вы пытаетесь подключиться по SSH.Используйте команду ssh-copy-id , чтобы скопировать открытый ключ в целевую систему. По умолчанию путь к файлу — /home/user/.ssh/id_rsa.pub . Вы вводите команду, указываете файл, которым вы делитесь, а затем пользователя / хост, с которым мы делимся им. Должно получиться так:

      [пользователь @ хост ~] $ ssh-copy-id -i . ssh / key-with-pass.pub user @ destination
    / usr / bin / ssh-copy-id: INFO: Источник ключей для установки: "/home/user/.ssh/id_rsa.pub"
    / usr / bin / ssh-copy-id: INFO: попытка входа в систему с новым ключом (ключами), чтобы отфильтровать уже установленные
    / usr / bin / ssh-copy-id: ИНФОРМАЦИЯ: осталось установить 1 ключ (и) - если вам будет предложено сейчас установить новые ключи
    пользователь @ целевой пароль: changeme
    Количество добавленных ключей: 1  

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

    Видно здесь:

      [пользователь @ хост ~] $ ssh -i .ssh / ключ-с-паролем пользователь @ назначение
    Введите кодовую фразу для ключа '.ssh / key-with-password': пароль здесь, если вы его установили
    [user @ destination ~]  $ 

    Преимущества и резюме

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

    [Бесплатный онлайн-курс: технический обзор Red Hat Enterprise Linux. ]

    keygen (1) — справочная страница Linux

    Имя

    ssh-keygen — генерация, управление и преобразование ключей аутентификации

    Сводка

    ssh-keygen [ -q ] [ -b бит ] -t тип [ -N new_passphrase ] [ -C comment ] [ -C comment ] output_keyfile ]

    ssh-keygen -p [ -P old_passphrase ] [ -N new_passphrase ] [ -f keyfile ]

    ssh-keygen -i [ -f input_keyfile ]

    ssh-keygen -e [ -f input_keyfile ]

    ssh-keygen -y [ -f input_keyfile ]

    ssh-keygen -c [ -P кодовая фраза ] [ -C комментарий ] [ -f ключевой файл ]

    ssh-keygen -l [ -f input_keyfile ]

    ssh-keygen -B [ -f input_keyfile ]

    ssh-keygen -D считыватель

    ssh-keygen -F имя хоста [ -f known_hosts_file ] [ -l ]

    ssh-keygen -H [ -f known_hosts_file ]

    ssh-keygen -R имя хоста [ -f known_hosts_file ]

    ssh-keygen -U считыватель [ -f input_keyfile ]

    ssh-keygen -r имя хоста [ -f input_keyfile ] [ -g ]

    ssh-keygen -G выходной_файл [ -v ] [ -b бит ] [ -M память ] [ -S start_point ]

    ssh-keygen -T output_file -f input_file [ -v ] [ -a num_trials ] [ -W generator ]

    ssh-keygen [ -n ] [ -D смарт-карта ]

    Описание

    ssh-keygen генерирует, управляет и преобразует ключи аутентификации для ssh (1). ssh-keygen может создавать ключи RSA для использования протоколом SSH версии 1 и ключи RSA или DSA для использования протоколом SSH версии 2. Тип создаваемого ключа указывается с помощью опции -t . Если вызывается без каких-либо arguments, ssh-keygen сгенерирует ключ RSA для использования в соединениях по протоколу SSH 2.

    ssh-keygen также используется для создания групп для использования в групповом обмене Диффи-Хеллмана (DH-GEX). См. Подробности в разделе MODULI GENERATION .

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

    Обычно эта программа генерирует ключ и запрашивает файл, в котором будет храниться закрытый ключ. Открытый ключ хранится в файле с тем же именем, но ».pub » добавлен. Программа также запрашивает кодовую фразу. Кодовая фраза может быть пустой, что означает отсутствие ключевой фразы (ключи хоста должны иметь пустую кодовую фразу) или это может быть строка произвольной длины. Парольная фраза похожа на пароль, за исключением того, что это может быть фраза, состоящая из ряда слов, знаков препинания, цифр и т. Д. пробел или любую строку символов, которую вы хотите. Хорошие парольные фразы состоят из 10–30 символов, не являются простыми предложениями или легко угадываются иным способом (английский проза имеет только 1-2 бита энтропии на символ и содержит очень плохие парольные фразы), и содержит смесь прописных и строчных букв, цифр и не буквенно-цифровые символы.Парольную фразу можно изменить позже, используя опцию -p .

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

    Для ключей RSA1 в файле ключей также есть поле комментария, которое используется только для удобства пользователя и помогает идентифицировать ключ. Комментарий может сказать, что ключ для или чего-то еще полезного. Комментарий инициализируется как «user @ host» при создании ключа, но его можно изменить с помощью параметра -c .

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

    Возможны следующие варианты:

      -a   испытаний  
    Задает количество тестов на простоту, выполняемых при отборе кандидатов DH-GEX с помощью команды -T .

    -B ‘Показать краткую сводку указанного файла с закрытым или открытым ключом.

    -b бит
    Задает количество бит в создаваемом ключе.Для ключей RSA минимальный размер составляет 768 бит, а значение по умолчанию — 2048 бит. Обычно считается 2048 бит. достаточный. Ключи DSA должны быть точно 1024 бит, как указано в FIPS 186-2.

    -C комментарий
    Предоставляет новый комментарий.

    -c ‘Запрашивает изменение комментария в файлах закрытого и открытого ключей. Эта операция поддерживается только для ключей RSA1. Программа запросит файл, содержащий закрытые ключи, для ключевой фразы, если она есть в ключе, и для нового комментария.

    -D Считыватель
    Загрузите открытый ключ RSA, хранящийся на смарт-карте, в считывающее устройство .

    -e ‘Эта опция будет читать закрытый или открытый файл ключей OpenSSH и печатать ключ в формате файла открытого ключа SSH RFC 4716 в стандартный вывод. Эта опция позволяет экспорт ключей для использования несколькими коммерческими реализациями SSH.

    -F имя хоста
    Найдите указанное имя хоста в файле known_hosts , перечислив все найденные вхождения.Эта опция полезна для поиска хешированных имен хостов или адресов, а также может использоваться вместе с опцией -H для печати найденных ключей в хешированном формате.

    -f имя_файла
    Задает имя файла ключа.

    -G output_file
    Создает простые числа-кандидаты для DH-GEX. Эти праймы должны быть проверены на безопасность (с использованием опции -T ) перед использованием.

    -g ‘Используйте общий формат DNS при печати записей ресурсов отпечатков пальцев с помощью команды -r .

    -H ‘Хешировать файл known_hosts . Это заменяет все имена хостов и адреса хешированными представлениями в указанном файле; оригинал содержимое перемещается в файл с суффиксом .old. Эти хэши могут нормально использоваться ssh и sshd , но они не раскрывают идентифицирующую информацию. если содержимое файла будет раскрыто. Этот параметр не изменяет существующие хешированные имена хостов и поэтому безопасен для использования с файлами, которые смешивают хешированные и не хешированные имена.

    -i ‘Эта опция будет читать незашифрованный файл закрытого (или открытого) ключа в формате, совместимом с SSh3, и печатать закрытый (или общедоступный), совместимый с OpenSSH. ключ к stdout. ssh-keygen также читает формат файла открытого ключа SSH RFC 4716. Эта опция позволяет импортировать ключи из нескольких коммерческих SSH реализации.

    -l ‘Показать отпечаток указанного файла открытого ключа. Также поддерживаются частные ключи RSA1. Для ключей RSA и DSA ssh-keygen пытается найти соответствующий файл открытого ключа и распечатывает его отпечаток пальца.В сочетании с -v , арт-представление ключа в формате ASCII предоставляется вместе с отпечатком пальца.

    -M память
    Укажите объем памяти, который будет использоваться (в мегабайтах) при создании модулей-кандидатов для DH-GEX.

    -n ‘Извлечь открытый ключ из смарт-карты.

    -N new_passphrase
    Предоставляет новую кодовую фразу.

    -P passphrase
    Предоставляет (старую) парольную фразу.

    -p ‘Запрашивает изменение парольной фразы файла закрытого ключа вместо создания нового закрытого ключа. Программа запросит файл, содержащий закрытый ключ для старой кодовой фразы и дважды для новой кодовой фразы.

    -q ‘Без звука ssh-keygen . Используется / etc / rc при создании нового ключа.

    -R hostname
    Удаляет все ключи, принадлежащие hostname , из файла known_hosts .Эта опция полезна для удаления хешированных хостов (см. Выше опцию -H ).

    -r имя хоста
    Распечатайте запись ресурса отпечатка SSHFP с именем имя хоста для указанного файла открытого ключа.

    -S start
    Укажите начальную точку (в шестнадцатеричном формате) при генерации возможных модулей для DH-GEX.

    -T output_file
    Протестируйте простые числа кандидатов для группового обмена DH (сгенерированные с использованием опции -G ) в целях безопасности.

    -t тип
    Задает тип создаваемого ключа. Возможные значения: «rsa1» для версии протокола 1 и «rsa» или «dsa» для версии протокола 2.

    -U считыватель
    Загрузите существующий закрытый ключ RSA в смарт-карту в считывателе .

    -v ‘Подробный режим. Заставляет ssh-keygen печатать отладочные сообщения о его ходе. Это полезно для отладки генерации модулей.Несколько Параметры -v увеличивают подробность. Максимум 3.

    -W генератор
    Укажите желаемый генератор при тестировании возможных модулей для DH-GEX.

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

    Генерация модулей

    ssh-keygen может использоваться для создания групп для протокола Diffie-Hellman Group Exchange (DH-GEX).Создание этих групп — это двухэтапный процесс: Во-первых, простые числа-кандидаты генерируются с использованием быстрого, но интенсивного процесса памяти. Эти простые числа-кандидаты затем проверяются на пригодность (процесс, требующий интенсивного использования ресурсов процессора). процесс).

    Генерация простых чисел выполняется с использованием опции -G . Желаемая длина простых чисел может быть указана опцией -b . Для пример:

    # ssh-keygen -G moduli-2048.candidates -b 2048

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

    После того, как набор кандидатов сформирован, он должен быть проверен на пригодность. Это можно сделать с помощью опции -T . В этом режиме ssh-keygen будет читать кандидатов из стандартного ввода (или файла, указанного с помощью параметра -f ). Например:

    # ssh-keygen -T moduli-2048 -f moduli-2048.candidates

    По умолчанию каждый кандидат будет подвергнут 100 проверкам на простоту.Это можно изменить с помощью опции -a . Значение генератора ЦТ будет выбирается автоматически для рассматриваемого прайма. Если требуется конкретный генератор, его можно запросить с помощью опции -W . Действующий генератор значения 2, 3 и 5.

    Экранированные группы ЦО могут быть установлены в / etc / ssh / moduli . Важно, чтобы этот файл содержал модули разной длины в битах и ​​чтобы оба конца соединения имеют общие модули.

    Файлы

     ~ /.ssh / идентификатор 
    Содержит идентификацию пользователя RSA-аутентификации версии 1 протокола. Этот файл не должен быть доступен для чтения никому, кроме пользователя. Можно указать парольную фразу при генерации ключа; эта кодовая фраза будет использоваться для шифрования частной части этого файла с помощью 3DES. Доступ к этому файлу не осуществляется автоматически от ssh-keygen , но он предлагается как файл по умолчанию для закрытого ключа. ssh (1) прочитает этот файл при попытке входа в систему.

    ~ / .ssh / identity.pub
    Содержит открытый ключ RSA версии 1 протокола для аутентификации. Содержимое этого файла должно быть добавлено в ~ / .ssh / authorized_keys на всех машинах. где пользователь желает войти в систему с использованием аутентификации RSA. Нет необходимости хранить в секрете содержимое этого файла.

    ~ / .ssh / id_dsa
    Содержит аутентификационный идентификатор пользователя DSA версии 2 протокола. Этот файл не должен быть доступен для чтения никому, кроме пользователя. Можно указать пароль при генерации ключа; эта кодовая фраза будет использоваться для шифрования частной части этого файла с помощью 3DES.Доступ к этому файлу не осуществляется автоматически от ssh-keygen , но он предлагается как файл по умолчанию для закрытого ключа. ssh (1) прочитает этот файл при попытке входа в систему.

    ~ / .ssh / id_dsa.pub
    Содержит открытый ключ протокола DSA версии 2 для аутентификации. Содержимое этого файла должно быть добавлено в ~ / .ssh / authorized_keys на всех машинах. где пользователь желает войти в систему, используя аутентификацию с открытым ключом. Нет необходимости хранить в секрете содержимое этого файла.

    ~ / .ssh / id_rsa
    Содержит идентификатор аутентификации пользователя RSA версии 2 протокола. Этот файл не должен быть доступен для чтения никому, кроме пользователя. Можно указать пароль при генерации ключа; эта кодовая фраза будет использоваться для шифрования частной части этого файла с помощью 3DES. Доступ к этому файлу не осуществляется автоматически от ssh-keygen , но он предлагается как файл по умолчанию для закрытого ключа. ssh (1) прочитает этот файл при попытке входа в систему.

    ~ / .ssh / id_rsa.pub
    Содержит открытый ключ RSA версии 2 протокола для аутентификации. Содержимое этого файла должно быть добавлено в ~ / .ssh / authorized_keys на всех машинах. где пользователь желает войти в систему, используя аутентификацию с открытым ключом. Нет необходимости хранить в секрете содержимое этого файла.

    / etc / ssh / moduli
    Содержит группы Диффи-Хеллмана, используемые для DH-GEX. Формат файла описан в модулях (5).

    Окружающая среда

      SSH_USE_STRONG_RNG  
    Повторное заполнение генератора случайных чисел OpenSSL обычно выполняется из / dev / urandom .Если для переменной среды SSH_USE_STRONG_RNG установлено значение значение, отличное от 0 , генератор случайных чисел OpenSSL повторно загружается из / dev / random . Количество прочитанных байтов определяется SSH_USE_STRONG_RNG ценить. Минимум 6 байт. Этот параметр не рекомендуется на компьютерах без аппаратного генератора случайных чисел, поскольку недостаточная энтропия вызывает соединение будет заблокировано до тех пор, пока не будет достаточно энтропии.

    См. Также

    ssh (1), ssh-add (1), ssh-agent (1), модули (5), sshd (8)

      Формат файла открытого ключа Secure Shell (SSH) , RFC 4716, 2006.

    Авторы

    OpenSSH является производным от оригинальной и бесплатной версии ssh 1.2.12 от Тату Илонена. Аарон Кэмпбелл, Боб Бек, Маркус Фридл, Нильс Провос, Тео де Раадт и Dug Song удалил множество ошибок, повторно добавил новые функции и создал OpenSSH. Маркус Фридл внес вклад в поддержку протоколов SSH версий 1.5 и 2.0.

    BSD 14 апреля 2013 г. BSD

    Ссылка на

    amaddclient (8), автосш (1), бэкап-менеджер (8), гсимодули (5), гсисш (1), gsissh-keysign (8), gsissh_config (5), гсисшд (8), rsnapshot (1), scp (1), SFTP (1), ssh-keysign (8), ssh_config (5), tlsa (1) Утилита командной строки

    ssh-keygen — справка и инструкции Reflection Desktop

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

    Сводка

     ssh-keygen [-b биты] -t тип [-N [кодовая фраза]] [-C комментарий] [-f output_keyfile]
    ssh-keygen -B [-f файл_входа]
    ssh-keygen -c [-P кодовая фраза] [-C комментарий] [-f ключевой файл]
    ssh-keygen -e [-f файл_входа]
    ssh-keygen -p [-P старая_парольная фраза] [-N новая_парольная фраза] [-f ключевой файл]
    ssh-keygen -i [-f файл_входа]
    ssh-keygen -y [-f файл_входа]
    ssh-keygen -l [-f файл_входа] 

    Описание

    Утилиту командной строки ssh-keygen можно использовать для создания ключей RSA и DSA для аутентификации с открытым ключом, редактирования свойств существующих ключей и преобразования форматов файлов.Если параметры не указаны, ssh-keygen генерирует 2048-битную пару ключей RSA и запрашивает у вас имя ключа и парольную фразу для защиты закрытого ключа. Открытые ключи создаются с использованием того же базового имени, что и закрытый ключ, с добавленным расширением .pub. Местоположение ключа отображается после завершения генерации ключа.

    Опции

    -b биты

    Задает размер ключа. До некоторой степени больший размер ключа повышает безопасность. Увеличение размера ключа замедляет начальное соединение, но не влияет на скорость шифрования или дешифрования потока данных после успешного соединения.Длина ключа, который вы должны использовать, зависит от многих факторов, включая: тип ключа, время жизни ключа, значение защищаемых данных, ресурсы, доступные потенциальному злоумышленнику, и размер симметричного ключа, который вы используете в в сочетании с этим асимметричным ключом. Чтобы обеспечить лучший выбор для ваших нужд, мы рекомендуем вам связаться с вашим сотрудником службы безопасности. Размеры ключей округляются до следующего значения, делимого на 64 бита. Значение по умолчанию для ключей DSA — 1024 бита; для RSA это 2048 бит.

    -B

    Показывает отпечаток указанного ключа в формате SHA-1 Bubble Babble. Вы можете указать ключевой файл с помощью -f. Если вы не укажете файл, вас попросят указать имя файла. Вы можете указать имя частного или открытого ключа, но в любом случае открытый ключ должен быть доступен.

    -c

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

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

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

    -e

    Использует указанный открытый или закрытый ключ OpenSSH для создания открытого ключа в формате Reflection. Вы можете указать ключевой файл с помощью -f. Если вы не укажете файл, вас попросят указать имя файла.

    -f имя файла

    Задает имя файла для сгенерированного закрытого ключа.(Также создается открытый ключ, которому всегда присваивается то же имя, что и закрытому ключу, плюс расширение файла .pub.) Этот параметр также можно использовать в сочетании с -e, -i, -l, -p, -y, и -B, чтобы указать имя входного файла.

    Преобразует указанный открытый ключ Reflection в формат OpenSSH. Вы можете указать ключевой файл с помощью -f. Если вы не укажете файл, вас попросят указать имя файла.

    -час

    Отображает сводку параметров командной строки.

    -l

    Показать отпечаток указанного файла открытого ключа с помощью хэша MD5. Вы можете указать ключевой файл с помощью -f. Если вы не укажете файл, вас попросят указать имя файла. Если вы укажете закрытый ключ, ssh-keygen попытается найти соответствующий файл открытого ключа и распечатает его отпечаток.

    -N кодовая фраза

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

     ssh-keygen -N mypassphrase -f keyfile 

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

     ssh-keygen -N -f keyfile 

    Вы также можете использовать -N в сочетании с -p и -P, чтобы изменить парольную фразу существующего ключа.

    -п

    Используйте эту опцию, чтобы изменить парольную фразу существующего закрытого ключа.Если вы используете только этот параметр, программа запрашивает файл, содержащий закрытый ключ, старую кодовую фразу и дважды — новую кодовую фразу. Вы можете использовать его в сочетании с -f, -P и -N, чтобы изменить кодовую фразу в неинтерактивном режиме. Например:

     ssh-keygen -p -f keyfile -P oldpassphrase -N newpassphrase 
    -P парольная фраза

    Предоставляет (старую) кодовую фразу.

    -q

    Тишина ssh-keygen.

    -т тип

    Задает алгоритм, используемый для генерации ключа. Возможные значения: «rsa» или «dsa» для версии протокола 2.

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

    Возвращаемые значения

    ssh-keygen возвращает 0 (ноль), если команда завершилась успешно.Любое ненулевое значение указывает на сбой.

    Настроить SSH-ключ | Bitbucket Cloud

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

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

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

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

    Настройка SSH для Git в Windows

    Используйте этот раздел для создания идентификатора по умолчанию и ключа SSH при использовании Git в Windows. По умолчанию система добавляет ключи для всех удостоверений в / Users / /.ssh каталог.

    Шаг 1. Установите идентификатор по умолчанию

    1. В командной строке введите ssh-keygen.

    Для Windows 7 или более ранней версии

    Вы можете ввести ssh-keygen только в окно Git Bash. Это не будет работать в командной строке.

    Команда запросит у вас файл для сохранения ключа:

    $ ssh-keygen
    Создание пары открытого / закрытого ключей rsa.
    Введите файл, в котором нужно сохранить ключ (/ c / Users / emmap1 /.ssh / id_rsa):

    2. Нажмите Enter, чтобы принять ключ и путь по умолчанию, / c / Users / <имя пользователя> /.ssh/id_rsa.

    Мы рекомендуем оставить имя ключа по умолчанию, если у вас нет причины его изменить. Чтобы создать ключ с именем или путем не по умолчанию, укажите полный путь к ключу. Например, чтобы создать ключ с именем my-new-ssh-key, введите путь Windows, показанный здесь:

    $ ssh-keygen
    Создание пары открытого / закрытого ключей rsa.
    Введите файл, в котором нужно сохранить ключ (/ c / Users / emmap1 /.ssh / id_rsa): c: \ Users \ emmap1 \ .ssh \ my-new-ssh-key

    3. Введите и повторно введите парольную фразу при появлении запроса.

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

    $ ssh-keygen
    Создание пары открытого / закрытого ключей rsa.
    Введите файл, в котором нужно сохранить ключ (/c/Users/emmap1/.ssh/id_rsa):
    Созданный каталог ‘/c/Users/emmap1/.ssh’.
    Введите кодовую фразу (пусто, если кодовая фраза отсутствует):
    Введите ту же парольную фразу еще раз:
    Ваша идентификационная информация была сохранена в / c / Users / emmap1 /.ssh / id_rsa.
    Ваш открытый ключ сохранен в /c/Users/emmap1/.ssh/id_rsa.pub.
    Отпечаток ключа: e7: 94: d1: a3: 02: ee: 38: 6e: a4: 5e: 26: a3: a9: f4: 95: d4 emmap1 @ EMMA-PC

    4. Перечислите содержимое .ssh для просмотра файлов ключей.

    Вы должны увидеть что-то вроде следующего:

    $ dir .ssh
    id_rsa id_rsa.pub

    Команда отображает два файла: один для открытого ключа (например, id_rsa.pub) и один для закрытого ключа (например, , Id_rsa).

    Шаг 2. Добавьте ключ в ssh-agent

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

    1. Чтобы запустить агент, запустите следующее:

      $ eval $ (ssh-agent)
      Идентификатор агента 9700

    2. Введите ssh-add, а затем путь к файлу закрытого ключа:

      $ ssh- add ~ / .ssh /

    Шаг 3. Добавьте открытый ключ в настройки своей учетной записи

    1. В Bitbucket выберите Personal settings из вашего аватара в левом нижнем углу.

    2. Нажмите SSH-ключи . Если вы уже добавили ключи, вы увидите их на этой странице.

    3. Откройте файл .ssh / id_rsa.pub (или как там вы назвали файл открытого ключа) и скопируйте его содержимое.
      Вы можете увидеть адрес электронной почты в последней строке. Неважно, включаете ли вы адрес электронной почты или нет.

    4. В Bitbucket щелкните Добавить ключ .

    5. Введите Label для вашего нового ключа, например, Открытый ключ по умолчанию.

    6. Вставьте скопированный открытый ключ в поле SSH Key .

    7. Нажмите Сохранить .
      Bitbucket отправит вам электронное письмо для подтверждения добавления ключа.

    8. Вернитесь в командную строку и проверьте свою конфигурацию и имя пользователя, введя следующую команду:

      $ ssh -T [email protected]

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

      1 2 3 4 5 conq: авторизован как emmap1.Вы можете использовать git или hg для подключения к Bitbucket. Доступ к оболочке отключен.

      Если вы получили сообщение об ошибке Permission denied (publickey), обратитесь за помощью на страницу «Устранение неполадок SSH».

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

    Редактировать ключ SSH

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

    Настройка SSH в macOS / Linux

    Используйте этот раздел для создания идентификатора по умолчанию и ключа SSH в macOS или Linux. По умолчанию система добавляет ключи в каталог /Users//.ssh в macOS и /home//.ssh в Linux.

    Шаг 1. Установите идентификатор по умолчанию

    1. В терминале введите ssh-keygen в командной строке.
    Команда запросит у вас файл для сохранения ключа:

    $ ssh-keygen
    Создание пары ключей открытого и закрытого типа rsa.
    Введите файл, в котором нужно сохранить ключ (/Users/emmap1/.ssh/id_rsa):

    2. Нажмите клавишу Enter или Return, чтобы принять расположение по умолчанию.

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

    Чтобы создать ключ с именем или путем, отличным от значения по умолчанию, укажите полный путь к ключу. Например, чтобы создать ключ с именем my-new-ssh-key, введите путь, подобный указанному в приглашении:

    $ ssh-keygen
    Создание пары ключей rsa типа открытый / закрытый.
    Введите файл, в котором нужно сохранить ключ (/Users/emmap1/.ssh/id_rsa): /Users/emmap1/.ssh/my-new-ssh-key

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

    $ ssh-keygen
    Создание пары ключей открытого и закрытого типа rsa.
    Введите файл, в котором нужно сохранить ключ (/Users/emmap1/.ssh/id_rsa):
    Создан каталог ‘/Users/emmap1/.ssh’.
    Введите кодовую фразу (пусто, если кодовая фраза отсутствует):
    Введите ту же парольную фразу еще раз:
    Ваша идентификационная информация была сохранена в /Users/emmap1/.ssh/id_rsa.
    Ваш открытый ключ сохранен в /Users/emmap1/.ssh/id_rsa.pub.
    Отпечаток ключа:
    4c: 80: 61: 2c: 00: 3f: 9d: dc: 08: 41: 2e: c0: cf: b9: 17: 69 [email protected]
    Произвольное изображение ключа:
    + — [RSA 2048] —- +
    | * о + ооо. |
    |. +. = О +. |
    |. *. * o. |
    | . = E o |
    | о.S |
    | . . |
    | . |
    | |
    | |
    + —————— +

    4. Перечислите содержимое ~ / .ssh для просмотра файлов ключей.

    $ ls ~ / .ssh
    id_rsa id_rsa.pub

    Команда отображает два файла: один для открытого ключа (например, id_rsa.pub) и один для закрытого ключа (например, id_rsa).

    Шаг 2. Добавьте ключ в ssh-agent

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

    1. Чтобы запустить агент, запустите следующее:

      $ eval `ssh-agent`
      Идентификатор агента 9700

    2. Введите ssh-add, а затем путь к файлу закрытого ключа:

      macOS $ ssh- add -K ~ / .ssh /

      Linux $ ssh-add ~ / .ssh /

    3. (только для macOS) Чтобы ваш компьютер запомнил ваш пароль при каждом перезапуске, открытии (или создании ) ~ /.ssh / config и добавьте в него следующие строки:

      1 2 Хост * UseKeychain да

    Шаг 3. Добавьте открытый ключ в настройки своей учетной записи

    1. В Bitbucket выберите Персональные настройки из вашего аватара в левом нижнем углу.

    2. Нажмите SSH-ключи .
      Если вы уже добавили ключи, вы увидите их на этой странице.

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

      В Linux вы можете cat содержимое:

      $ cat ~ / .ssh / id_rsa.pub

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

      $ pbcopy <~ / .ssh / id_rsa. pub

    4. Выберите и скопируйте вывод ключа в буфер обмена.
      Если у вас возникли проблемы с копированием и вставкой, вы можете открыть файл непосредственно с помощью Блокнота. Выберите содержимое файла (только не выбирайте символы конца файла).

    5. В Bitbucket щелкните Добавить ключ .

    6. Введите Label для вашего нового ключа, например, Открытый ключ по умолчанию.

    7. Вставьте скопированный открытый ключ в поле SSH Key .
      При вставке вы можете увидеть адрес электронной почты в последней строке. Не имеет значения, включаете ли вы адрес электронной почты в Key .

    8. Нажмите Сохранить .
      Bitbucket отправит вам электронное письмо для подтверждения добавления ключа.

    9. Вернитесь в окно терминала и проверьте свою конфигурацию и имя пользователя, введя следующую команду:

      $ ssh -T [email protected]

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

      1 2 3 4 5 conq: авторизован как emmap1. Вы можете использовать git или hg для подключения к Bitbucket. Доступ к оболочке отключен.

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

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

    Редактировать SSH-ключ

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

    Настройка SSH с помощью Sourcetree в Windows

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

    Шаг 1. Установите Sourcetree и добавьте свою учетную запись Bitbucket

    1. Если у вас еще нет Sourcetree, перейдите на https://www.sourcetreeapp.com/ и нажмите кнопку Скачать бесплатно .

    2. Щелкните файл .exe, чтобы установить Sourcetree.Обратитесь к странице установки Sourcetree для получения более подробной информации.

      1. Вы можете увидеть Загрузить SSH-ключ? диалог после установки. Щелкните Нет , если у вас его нет и вы хотите использовать Sourcetree для его создания.

    3. Добавьте свою учетную запись и выберите SSH в качестве предпочтительного протокола . Если вы не подключаете свою учетную запись во время настройки, щелкните Remote , чтобы открыть страницу Удаленных репозиториев и щелкните Добавить учетную запись .

    Шаг 2. Создайте ключ SSH

    1. Из инструментов выберите Создать или импортировать ключи SSH .

    2. В диалоговом окне PuTTY Key Generator нажмите кнопку Generate .

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

    4. Введите парольную фразу для вашего SSH-ключа в поля Парольная фраза и Подтвердите парольную фразу .

    5. Нажмите Сохранить открытый ключ . В диалоговом окне сохранения выберите место для сохранения открытого ключа, назовите файл с расширением .pub и нажмите Сохранить .

    6. Нажмите Сохранить закрытый ключ . В диалоговом окне сохранения выберите, где сохранить закрытый ключ, назовите файл и нажмите Сохранить .

    7. Закройте диалоговое окно PuTTY Key Generator .

    Шаг 3. Установите свой закрытый ключ на Pageant

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

    1. Дважды щелкните значок Pageant (агент аутентификации PuTTY) на панели задач, чтобы открыть диалоговое окно Pageant Key List .

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

    3. Перейдите к файлу закрытого ключа, который вы сохранили на шаге 1, и щелкните Открыть .

    4. Введите кодовую фразу для вашего SSH-ключа и нажмите OK .
      Pageant показывает ваш ключ в текущем списке.

    5. Нажмите Закрыть .

    Шаг 4. Добавьте открытый ключ в настройки своей учетной записи

    1. В Sourcetree откройте диалоговое окно PuTTY Key Generator , выбрав Инструменты > Создать или импортировать ключи SSH .

    2. Щелкните Загрузить , перейдите в папку SSH и щелкните закрытый ключ.Убедитесь, что вы просматриваете Все файлы, если не видите свой закрытый ключ.

    3. Введите парольную фразу для ключа SSH и нажмите ОК .

    4. Скопируйте открытый ключ в первое поле.

    5. В Bitbucket выберите Персональные настройки из вашего аватара в левом нижнем углу.
      Откроется страница Настройки учетной записи .

    6. Нажмите SSH-ключи .
      Если вы уже добавили ключи, вы увидите их на этой странице.

    7. Нажмите Добавить ключ .

    8. Введите Label для вашего нового ключа, например, Открытый ключ по умолчанию.

    9. Вставьте скопированный открытый ключ в поле SSH Key .

    10. Нажмите Сохранить .
      Bitbucket отправит вам электронное письмо для подтверждения добавления ключа.

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

    Редактировать ключ SSH

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

    Настройка SSH с помощью Sourcetree в macOS

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

    Шаг 1. Установите Sourcetree и добавьте свою учетную запись Bitbucket

    1. Если у вас еще нет Sourcetree, перейдите по адресу https: // www.sourcetreeapp.com/ и нажмите кнопку Скачать бесплатно .

    2. Откройте ZIP-файл, чтобы установить Sourcetree. Обратитесь к странице установки Sourcetree для получения более подробной информации.

    3. Если вы не подключаете свою учетную запись во время настройки, вы можете добавить ее на вкладке Учетные записи , выбрав Preferences в меню Sourcetree .

    Шаг 2. Создайте SSH-ключ

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

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

    1. В меню Sourcetree выберите Preferences .

    2. Щелкните вкладку Учетные записи , выберите учетную запись, в которую вы хотите добавить ключ SSH, и нажмите Изменить .

    3. Измените протокол с на SSH , если он еще не выбран.

    4. Удерживайте нажатой клавишу OPTION на клавиатуре, чтобы увидеть кнопку Generate Key .

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

    5. Нажмите Создать ключ .

    6. Введите кодовую фразу для ключа SSH в поля Passphrase и Confirm Passphrase .

    7. Щелкните Создать .

    Шаг 3. Добавьте открытый ключ в настройки своей учетной записи

    1. В Bitbucket выберите Personal settings из вашего аватара в левом нижнем углу.
      Откроется страница Настройки учетной записи .

    2. Нажмите SSH-ключи .
      Если вы уже добавили ключи, вы увидите их на этой странице.

    3. Выберите свою учетную запись на вкладке Учетные записи в Sourcetree.

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

    5. В Bitbucket щелкните Добавить ключ .

    6. Введите Label для вашего нового ключа, например, Открытый ключ по умолчанию.

    7. Вставьте скопированный открытый ключ в поле SSH Key .

    8. Нажмите Сохранить .
      Bitbucket отправит вам электронное письмо для подтверждения добавления ключа.

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

    Редактировать ключ SSH

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

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

    Linux / OS X (Подробно)

    Для повышения безопасности вы можете сделать ключ еще большего размера с параметром -b.Для например, для 4096 бит:

     ssh-keygen -t rsa -b 4096
     

    OSL рекомендует использовать RSA вместо DSA, потому что ключи DSA должны быть только 1024 бит.

    • При появлении запроса вы можете нажать Enter, чтобы использовать местоположение по умолчанию. ( /home/your_username/.ssh/id_rsa в Linux или /Users/your_username/.ssh/id_rsa на Mac), если у вас еще нет ключа установлен, или укажите настраиваемое расположение, если вы создаете второй ключ (или просто хочу по какой-то причине).

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

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

    • Теперь ваш закрытый ключ должен находиться в указанном вами месте, а ваш общедоступный key будет в том же месте, но с добавлением «.pub» к имени файла.

    Примечание

    Если вы создаете этот ключ для использования с учетной записью OSL SSH, скопируйте и вставьте открытый ключ в ваш билет. Если бы мы не запрашивали у вас открытый ключ, а вы хотите, чтобы он был добавлен в вашу учетную запись, отправьте его по адресу [email protected], обязательно укажите, кто вы и с какими проектами связаны.

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

    • Никогда не делитесь своим файлом личного ключа, только файлом открытого ключа.

    Как сгенерировать SSH-ключ в Windows 10 {OpenSSH или PuTTY}

    Введение

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

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

    Это руководство покажет вам, как сгенерировать пару ключей SSH в Windows 10 с помощью OpenSSH или PuTTY.

    Предварительные требования

    • Система под управлением Windows 10
    • Учетная запись пользователя с административными привилегиями
    • Доступ к командной строке
    • Веб-браузер (необязательно, для загрузки PuTTY)

    Создание ключа SSH в Windows 10 с помощью клиента OpenSSH

    Шаг 1. Проверьте, установлен ли клиент OpenSSH

    Сначала проверьте, установлен ли у вас клиент OpenSSH:

    1.Откройте панель Settings , затем щелкните Apps .

    2. Под заголовком Приложения и функции щелкните Дополнительные функции .

    3. Прокрутите список вниз, чтобы увидеть, есть ли в нем OpenSSH Client .

    • Если это не так, нажмите на знак плюса рядом с Добавить функцию .
    • Прокрутите список, чтобы найти и выбрать OpenSSH Client .
    • Наконец, нажмите Установить .

    Шаг 2. Откройте командную строку

    1. Нажмите клавишу Windows .

    2. Тип cmd .

    3. В Best Match щелкните правой кнопкой мыши Командная строка .

    4. Щелкните Запуск от имени администратора .

    5. При появлении запроса нажмите Да в . Разрешить этому приложению вносить изменения в ваше устройство? всплывающее окно.

    Шаг 3. Используйте OpenSSH для создания пары ключей SSH

    1.В командной строке введите следующее:

      ssh-keygen  

    2. По умолчанию система сохраняет ключи в C: \ Users \ your_username /.ssh/id_rsa . Вы можете использовать имя по умолчанию или выбрать более описательные имена. Это может помочь различать ключи, если вы используете несколько пар ключей. Чтобы придерживаться параметра по умолчанию, нажмите Введите .

    Примечание: Если файл с таким именем уже существует, вас спросят, хотите ли вы перезаписать файл.

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

    4. Система сгенерирует пару ключей и отобразит отпечаток ключа и случайное изображение .

    5. Откройте браузер файлов.

    6. Перейдите к C: \ Users \ your_username /.ssh .

    7. Вы должны увидеть два файла. Идентификация сохраняется в файле id_rsa , а открытый ключ помечен как id_rsa .паб . Это ваша пара ключей SSH.

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

    Создание ключей SSH с помощью PuTTY

    До того, как OpenSSH был включен в Windows, инструмент PuTTY был золотым стандартом для генерации ключей SSH.

    Шаг 1. Установите PuTTY

    1. Перейдите на страницу разработчика и загрузите установщик для PuTTY:

    .

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

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

    Шаг 2. Запустите генератор ключей PuTTY SSH

    1. Нажмите клавишу Windows .

    2. Тип шпатлевка .

    3. В Best Match щелкните правой кнопкой мыши PuTTYgen .

    4. Щелкните Запуск от имени администратора.

    5.При появлении запроса нажмите Да на . Разрешить этому приложению вносить изменения в ваше устройство? всплывающее окно.

    Шаг 3. Используйте PuTTY для создания пары ключей SSH

    Процесс, описанный ниже, будет генерировать ключей RSA , классический и широко используемый тип алгоритма шифрования. Инструмент PuTTY keygen предлагает несколько других алгоритмов — DSA, ECDSA, Ed25519 и SSH-1 (RSA).

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

    1. В окне генератора ключей PuTTY Key Generator щелкните Создать .

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

    3. Сохраните публичный ключ:

    • Нажмите кнопку с надписью Сохранить открытый ключ .
    • Выберите место для сохранения ключа.
    • Дайте ключу имя (например, putty_key.pub )

    4. Сохраните закрытый ключ :

    • Щелкните меню Конверсии вверху.
    • Щелкните Экспорт ключа OpenSSH .
    • Вас спросят, хотите ли вы сохранить ключ без парольной фразы. Щелкните Да .
    • Выберите место для сохранения ключа (обычно в той же папке, что и открытый ключ).
    • Дайте ключу имя (например, putty_key ).

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

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

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

    Заключение

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

    Создание ключа SSH вручную в macOS

    Изменено: 05 января 2021, 04:46 UTC

    Вы генерируете SSH-ключ через macOS, используя приложение «Терминал».После загрузки действительного открытого ключа SSH служба Triton Compute Service использует SmartLogin для копирования открытого ключа на любую новую машину SmartMachine, которую вы предоставляете.

    Joyent рекомендует ключи RSA, потому что программы CLI node-manta работают с ключами RSA как локально, так и с агентом ssh. Ключи DSA будут работать, только если закрытый ключ находится в той же системе, что и CLI, и не защищен паролем.

    О терминале

    Terminal — это эмулятор терминала, который предоставляет текстовый интерфейс командной строки для оболочки Unix в macOS.

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

    1. В Finder выберите Utilities из папки Applications .
    2. Найдите Терминал в списке «Утилиты».
    3. Открытый терминал.

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

    Создание ключа SSH

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

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

    1. Введите следующую команду в окне Терминала.

        ssh-keygen -t rsa  

      Это запускает процесс генерации ключа.Когда вы выполняете эту команду, утилита ssh-keygen предлагает вам указать, где хранить ключ.

    2. Нажмите клавишу ENTER, чтобы принять местоположение по умолчанию. Утилита ssh-keygen предложит вам ввести кодовую фразу.

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

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

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

      Ваш идентификатор был сохранен в /Users/myname/.ssh/id_rsa.
    Ваш открытый ключ был сохранен в /Users/myname/.ssh/id_rsa.pub.
    Ключевой отпечаток пальца:
    ae: 89: 72: 0b: 85: da: 5a: f4: 7c: 1f: c2: 43: fd: c6: 44: 38 [email protected]
    Изображение ключа randomart:
    + - [RSA 2048] ---- +
    | |
    | . |
    | E. |
    | . . о |
    | о. . S. |
    | + + о. + |
    |, + o = o + |
    | о...o * o |
    |, oo.o. |
    + ----------------- +  

    Ваш закрытый ключ сохраняется в файле id_rsa в каталоге .ssh и используется для проверки того, что используемый вами открытый ключ принадлежит той же учетной записи Triton Compute Service.

    Никогда никому не сообщайте свой закрытый ключ!

    Ваш открытый ключ сохраняется в файле id_rsa.pub ; и является ключом, который вы загружаете в свою учетную запись Triton Compute Service.Вы можете сохранить этот ключ в буфер обмена, запустив это:

      pbcopy <~ / .ssh / id_rsa.pub  

    Импорт вашего SSH-ключа

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

    1. После копирования ключа SSH в буфер обмена вернитесь на страницу своей учетной записи.
    2. Выберите Import Public Key и вставьте свой SSH-ключ в поле Public Key.
    3. В поле Key Name укажите имя для ключа. Примечание : хотя указывать имя ключа необязательно, это лучший способ упростить управление несколькими ключами SSH.
    4. Добавьте ключ. Теперь он появится в вашей таблице ключей под SSH.

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

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

      $ ssh [email protected]
    [email protected] пароль:  

    Это потому, что:

    • Вы ввели неправильную парольную фразу.
    Обновлено: 03.11.2021 — 07:38

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

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