Ssh keygen ключи

      Комментарии к записи Ssh keygen ключи отключены

Уважаемый гость, на данной странице Вам доступен материал по теме: Ssh keygen ключи. Скачивание возможно на компьютер и телефон через торрент, а также сервер загрузок по ссылке ниже. Рекомендуем также другие статьи из категории «Патчи».

Ssh keygen ключи.rar
Закачек 2568
Средняя скорость 5905 Kb/s

Ssh keygen ключи

Автор: Damien Oh

Дата публикации: 10 ноября 2011 года

Перевод: А. Кривошей

Дата перевода: ноябрь 2011 г.

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

Создать открытый/закрытый SSH-ключ в Linux очень просто.

1. Откройте терминал. Введите:

Альтернативой является использование для создания ключа технологии DSA (Digital Signing Algorithm):

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

2. На нижеследующем скриншоте вы видите предложение указать место для сохранения ключа. По умолчанию это папка .ssh в вашей домашней директории. Для того, чтобы согласиться с настройками по умолчанию, просто нажмите «Enter».

3. Далее, вас попросят ввести идентификационную фразу. Это не идентификационная фраза для соединения с удаленным хостом. Это идентификационная фраза для разблокировки закрытого ключа, поэтому она не поможет вам получить доступ к удаленному серверу, даже если на нем хранится ваш закрытый ключ. Ввод идентификационной фразы не является обязательным. Чтобы оставить ее пустой, просто нажмите «Enter».

4. Теперь ваши открытый и закрытый SSH-ключи должны быть сгенерированы. Откройте файловый менеджер и перейдите в директорию .ssh. Вы должны увидеть два файла: id_rsa и id_rsa.pub.

5. Загрузите файл id_rsa.pub в домашнюю директорию вашего удаленного хоста (предполагается, что удаленный хост работает под Linux). Подключитесь к удаленному хосту с помощью SSH и переместите открытый ключ в его целевую директорию с помощью команд:

6. Оставаясь на удаленном хосте, откройте конфигурационный файл SSH:

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

Нажмите «ctrl + o», чтобы сохранить изменения, затем «ctrl + x», чтобы закрыть файл.

7. И последнее, перезапустите сервер SSH на удаленном хосте:

На этом все. Теперь вы можете соединяться со своим удаленным хостом с помощью команды:

Как сгенерировать ssh-ключи на Ubunu? Команда для генерации ssh-ключей.

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

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

/.ssh/ . Необходимо искать пару файлов с именами «что-нибудь» и «что-нибудь.pub», «что-нибудь» обычно (по умолчанию) называется как id_rsa.

Файл с расширением .pub – это ваш открытый ключ, а второй файл — ваш закрытый ключ. Если у вас нет этих файлов (или даже нет каталога .ssh), вы можете создать их запустив программу ssh-keygen, которая входит в состав пакета SSH в nix-системах.

Для генерации пары ssh-ключей нужно выполнить команду:

ssh-keygen -t rsa

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

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

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

Общий принцип для аутентификации на основе публичного ключа, в протоколе SSH, таков:

  • С помощью программы ssh-keygen, должна быть сгенерирована пара ключей, публичный ключ ( public key ) и приватный ключ ( private key )
  • Секретный ключ, всегда остается у клиента и никому никогда не показывается.
  • Публичный ключ копируется на удаленный SSH сервер ( говорим опять-же в контексте операционной системы FreeBSD ) и кладется в специальный файл, известный SSH серверу. По-умолчанию, для хранения публичных ключей, используется файл

/.ssh/authorized_keys. Файл для хранения ключей назначается в файле конфигурации SSH сервера, директивой AuthorizedKeysFile

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

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

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

    Генерация ключей с помощью программы ssh-keygen.

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

    -t type ssh-keygen, работает с тремя типами ключей. Возможные значения:

    RSA 1 — для протокола SSH версии 1.

    RSA — для протокола SSH версии 2.

    DSA — для протокола SSH версии 2. -b Длина ключа в битах.

    RSA — минимальная длина, 768 бит, длина ключа по-умолчанию, 2048 бит.

    DSA — длина 1024 бита. -i Данная опция используется для импорта ключей из одного формата ( например ключи сгенерированные программой PuTTYgen, для Windows ), в формат OpenSSH. -l Посмотреть отпечаток секретного ключа ( fingerprint ). -p Изменить секретную фразу приватного ключа.

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

    /.ssh/id_rsa — приватный ( секретный ) ключ, и

    /.ssh/id_rsa.pub — публичный ключ.

    Вот собственно и все, сгенерирована пара ключей RSA, с длиной 4096 бит и сохранены в файлы /root/.ssh/id_rsa и /root/.ssh/id_rsa.pub.

    Настройка SSH сервера на аутентификацию по открытому ключу.

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

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

    Теперь копируем публичный ключ на удаленный SSH сервер:

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

    /.ssh/authorized_keys, так как мы подключаемся пользователем root, то путь

    /.ssh/authorized_keys указывает на директорию /root/.ssh/authorized_keys.

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

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

    Обратите внимание на следующий момент, с приведенным выше вариантом конфигурации SSH сервера, при неудачной аутентификации по ключам, например если неправильно ввести секретную фразу ключей, будет предложена аутентификация по паролю. Что-бы изменить это поведение и например вообще не пускать пользователя root иначе, как по ключам, можно изменить в конфигурационном файле сервера, значение директивы PermitRootLogin с yes на without-password.

    Использование программы ssh-agent

    Как было сказано выше, в целях безопасности, приватный ключ, всегда должен быть защищен секретной фразой ( паролем ), но это вызывает некоторые неудобства, вам придется вводить секретную фразу, каждый раз когда вы подключаетесь к удаленному серверу по ключу, было-бы гораздо проще ввести пароль на ключ один раз и пользоваться им сколько потребуется. На этот случай в пакете OpenSSH, существуют специальные программы ssh-agent и ssh-add, в общем-то вторая является дополнением первой.

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

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

    ssh-agent -c Если в качестве оболочки используется С — Shell ssh-agent -s Если в качестве оболочки используется Bourne Shell eval `ssh-agent` В таком варианте запущенный ssh-agent, будет передан команде eval, которая выполнит его в текущей оболочке. Обратите внимание, используются обратные кавычки а не обычные !

    Итак, запускаем ssh-agent:

    При запуске, ssh-agent создает переменные окружения, проверим какие:

    Теперь нужно поместить в него расшифрованные ключи, делается это с помощью программы ssh-add.

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

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

    Теперь пробуем подключиться к удаленному SSH серверу:

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

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

    Загружен один ключ, по которому мы подключались к удаленной машине. Кроме этого, при запуске ssh-add, можно указать путь до конкретного ключа, который необходимо загрузить, например:

    Удаляются ключи из ssh-agent, так-же просто как и добавляются, для этого используется опция -d, без параметров, для удаления стандартных ключей, опция -d файл_ключа, если нужно удалить конкретный ключ, или опция -D, для удаления всех ключей, например:

    Приведу список самых используемых опций программы ssh-add:

    ssh-add Без опций, добавляются стандартные ключи ssh-add имя файла Добавляются конкретный ключ -l Показывает отпечатки всех загруженных в данный момент ключей -L Посмотреть список самих ключей -D Из ssh-agent, будут удалены все ключи -d имя файла Удаляет конкретный ключ -t Установить время жизни ключей, через данный промежуток времени ключи будут выгружены. -x Заблокировать ssh-agent паролем -X Разблокировать ssh-agent

    Что-бы закрыть ssh-agent, можно вызвать его c опцией -k, ну или на крайний случай прибить сигналом, например kill -QUIT PID, но это крайняя мера и при корректном запуске, это не потребуется:

    Как видите произошел обратный процесс, переменные очищены, процесс убит.

    Форвардинг ssh-agent

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

    Для примера, с локального хоста, Local_host, подключаемся к удаленной машине Remote_host, по каким-то причинам, нам понадобилось что-то посмотреть на еще одном хосте, Next_remote_host, что происходит в таком случае:

    • Клиент ssh c Local_host, подключается к SSH серверу, Remote_host, и запрашивает форвардинг для ssh-agent
    • Сервер SSH, /usr/sbin/sshd, хоста Remote_host, создает сокет в /tmp/ssh-XXXXXXX/agent.##### и устанавливает переменную окружения SSH_AUTH_SOCK, присваивая ей путь к сокету.
    • Когда нам понадобится подключиться к следующему серверу, ( мы сейчас на сервере Remote_host ), SSH клиент хоста Remote_host, обращается по пути, лежащему в переменной SSH_AUTH_SOCK, то есть к сокету.
    • SSH сервер, находящийся на другом конце сокета /tmp/ssh-XXXXXXX/agent.#####, передает данные из ssh, сервера Remote_host, на ssh-agent, запущенный на хосте Local_host. Вся работа с ключами происходит на машине Local_host а не на машинах, на которых вы регистрируетесь в процессе работы.
    • Теперь с хоста Remote_host, вы можете подключиться к хосту Next_remote_host, используя ключи, загруженные в ssh-agent, на хосте Local_host.

    Это только на первый взгляд сложно выглядит, вся эта схема работает абсолютно прозрачно для пользователя, от него требуется только соответствующим образом настроить /etc/ssh/ssh_config а дплее все просто. Собственно тут даже показывать нечего в качестве примера.

    Программа PuTTy, клиент SSH под Windows.

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

    • putty.exe — Программа, SSH, Telnet, Rlogin клиент;
    • puttygen.exe — Утилита для генерации и конвертации ключей;
    • pageant.exe — Аналог программы ssh-agent;
    • plink.exe — Клиент SSH, Telnet и Rlogin для командной строки;
    • pscp.exe — Программа командной строки для безопасного копирования SCP/SFTP
    • psftp.exe — Интерактивный SFTP клиент для командной строки;

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


    Статьи по теме