Документ взят из кэша поисковой машины. Адрес оригинального документа :
http://wiki.cmc.msu.ru/Main/SShKeys?cover=print;raw=on;rev=2
Дата изменения: Unknown
Дата индексирования: Sun Apr 10 23:07:42 2016
Кодировка: koi8-r
---+!! Работа с ssh-ключами %TOC% ---++ Что такое ssh-ключ Как следует из названия — это ключ для ssh, т.е. используется программой ssh (или другим ssh-клиентом, в дальнейшем так и будем говорить: *ssh-клиент*) для авторизации на удаленном сервере через демон/сервис sshd (будем называть этот сервер *ssh-сервером*) Если вы попали на эту страницу, значит в дальнейшем Вы таким способом будете (или от Вас требуют) авторизоваться (т.е. доказать, что это именно Вы) на каком-то unix-подобном сервере. Это может быть нужно: * [[HPC:/][для работы на суперкомпьютере/суперкомпьютерах]] * [[NewWebSite][для работы на сервере с вашим сайтом (на хостинге или выделенном)]] * и много где еще %X% Важно то, что для всего этого достаточно одного ключа, *не требуется* каждый раз создавать новый ключ. Еще одним важным свойством является то, что ключ состоит из двух частей: * публичная часть ключа (или публичный ключ) * приватная/закрытая часть ключа (или закрытый ключ) Устройство их аналогично устройству замка (что надо открыть) и железного ключа (то, чем открывают). Публичная часть — это замок, а приватная часть — это Ваш личный ключ. Именно публичная часть используется сервером для Вашей авторизации (сможете ли Вы открыть ключом шкатулку или нет). %X% Не компрометируйте свою закрытую часть ключа, что может произойти при: * передаче другому лицу (по аналогии: с железного ключа можно снять восковой отпечаток и отдать ключ обратно, копий ключа уже будет сколько угодно) * посылке по открытым каналам (аналогично, копию снять ничего не стоит) * и других обстоятельствах, когда доступ к закрытому ключу могут получить третьи лица ---++ Чем это лучше использования пароля Если Вы привыкли использовать системы с паролем, у Вас может возникнуть вопрос, почему администраторы сервера рекомендуют/заставляют Вас пользоваться ssh-ключами. Для этого я и написал этот раздел. Мало кто может придумать сложный пароль и поэтому всегда есть опасности: * простой пароль могут подобрать * сложный пароль пользователь может забыть * пользователь может раскрыть свой сложный пароль путем записывания пароля в записной книжке, на столе и т.д. В отличие от этого, для авторизации по ключу требуется некоторая подготовка: * Пользователь создает (если ключей еще нет) открытый и закрытый ключи * Открытый/публичный ключ копируется на удаленный ssh-сервер и кладется в специальный файл в директории того пользователя, в кого и надо залогиниться. Скорее всего будет использоваться файл *~/.ssh/authorized_keys*. И в дальнейшем при авторизации: * ssh-клиент отправляет ssh-серверу свой публичный ключ (поэтому публичный ключ у Вас тоже должен быть). * Сервер проверяет файл *~/.ssh/authorized_keys* на наличие присланного ключа, если он в файле найден, ssh-сервер отправляет клиенту сообщение, зашифрованное публичным ключом (_шкатулку закрытую на замок_) * Клиент должен расшифровать сообщение с помощью своего приватного ключа (_открыть шкатулку_), если приватный ключ защищен паролем, ssh-клиент попросит пользователя ввести пароль, чтобы сначала расшифровать сам ключ. * Если сообщение расшифровано (_обратно прислана открытая шкатулка_), то правильность закрытого и открытого ключей считается подтвержденной и пользователю предоставляется доступ на сервер. Как видно, преимущество ключей в том, что: * для подбора надо не только подобрать *очень большой открытый ключ* (скажем при длине ключа в 2048 бит он сложнее пароля из 8 символов примерно в 10^500 раз), но и подобрать закрытую пару к подобранному открытому ключу (тоже *очень сложная и дорогая* задача) * несколько пользователей могут логиниться под одним логином на удаленном сервере не обмениваясь общими секретами, иными словами: * если требуется для работы групповой логин, то имея пользователей с разными ключами всегда можно определить тот набор из пользователей, которые смогут логиниться в данный момент времени под этим групповым логином ---++ Как установить ssh-клиент Если у Вас: * *BSD (FreeBSD /NetBSD/OpenBSD): * ssh-клиент уже есть в системе * Mac OS X: * ssh-клиент уже есть в системе * дистрибутив GNU/Linux * в современных дистрибутивах должен быть, проверьте что есть команда *ssh*, если не работает: * Ubuntu/Debian: *sudo apt-get install openssh-client* в терминале. Или через *центр приложений Ubuntu* (как следует из названия, лишь в Ubuntu) * в остальных дистрибутивах: читайте документацию по своей системе * Windows: * Либо оконный клиент !PuTTY: * [[http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html][ссылка на страницу скачивания, рекомендуется скачивать инсталятор]] * [[http://the.earth.li/~sgtatham/putty/latest/x86/putty-0.63-installer.exe][Инсталятор версии 0.63 (ссылка может устареть)]] * Либо два файла: [[http://the.earth.li/~sgtatham/putty/0.63/x86/putty.exe][сама программа]], [[http://the.earth.li/~sgtatham/putty/0.63/x86/puttygen.exe][генератор ключей]] * Либо получить внутри Windows [[http://www.cygwin.com/][Unix-подобную систему с помощью Cygwin]] и поставить уже cygwin-пакет openssh-клиента (можно сразу при установке) Кстати !PuTTY есть и под Unix-системы. ---++ Как получить/создать ssh-ключ 1 Установить ssh-клиент (если еще не установили). По поводу установки смотри предыдущий раздел. 1 Далее — в зависимости от предпочтений: * [[SSHKeyGenUsePuTTY][если вы предпочитаете ssh-клиент PuTTY (программу putty)]] * [[SSHKeyGenUseOpenSSH][если вы предпочитаете ssh-клиент openssh (программу ssh)]] ---++ Использование различных ключей в одном клиенте Иногда пользователь хочет использовать несколько ключей, что может быть вызвано: * так сложилось * разграничением ключей по серверам (скажем, на особо секретные сервера можно заходить по ключу с паролем, а на менее секретные — безпарольным ключом) * тем, что уже имеющийся ключ не подходит серверу (например !BlueGene не принимает в данный момент ключи ECDSA) и надо создать другой ключ. Ничего страшного! Если использовуете программу ssh: * можно при запуске с помощью ключа *-i* указать нужный ключ (указывается *закрытая часть* ключа) * либо прописать настройку *IdentityFile* в конфигурационном файле (обычно ~/.ssh/config) для нужного сервера * более подробно — [[SSHKeyGenUseOpenSSH][на странице про генерирование и использование ключей в openssh]] Если использовать программу putty: * putty сохраняет параметры ключа в параметрах сессии * более подробно — [[SSHKeyGenUsePuTTY][на странице про генерирование и использование ключей в PuTTY]] ---++ Зачем нужен отпечаток (fingerprint) ключа Для безопасности. Скорее всего Вы передаете свой открытый ssh-ключ (а закрытый ключ, как Вы помните, никому *передавать нельзя*) по незащищенному каналу, т.е.: * посылаете письмо с открытым ssh-ключом * вводите текст открытого ssh-ключа через форму на сайте (через браузер) Во всех этих случаях теоретически можно подменить присланную информацию и в результате злоумышленник сможет выдать себя за Вас и с правами выданными для Вас войти в систему. Для предотвращения подобной ситуации и используется передача отпечатка по защищенному каналу: * например через бумагу с подписью: * Вы распечатываете отпечаток на бумаге, * заверяете его своей подписью, * преподаватель заверяет Вашу подпись и все это передает нам * администратор проверяет подпись преподавателя (поскольку преподавателей сильно меньше студентов и меняются они реже, это довольно простая операция) * администратор берет отпечаток от присланного другим способом публичного ключа и сверяет с тем, что принесли на бумаге. * если все совпало, то помещает открытый ключ в Вашего пользователя Проблема с передачей по защищенному каналу обычно в том, что большой объем данных передать довольно тяжело (скажем распечатать открытый ключ и потом набирать его с бумажного листа), поэтому в таких случаях и используется fingerprint. Для получения отпечатка: * Если используете программу ssh, то: * используете уже знакомую Вам программу ssh-keygen: * *ssh-keygen -l -f путь_до_публичного_ssh-ключа* * для нашего примера (RSA-ключ) можно использовать путь до *закрытого ключа* * в результате будет что-то вида: ==2048 4c:d1:96:6f:dd:e5:67:ce:55:8b:fb:38:b2:a2:63:c5 user@host (RSA)== * более подробно — [[SSHKeyGenUseOpenSSH][на странице про генерирование и использование ключей в openssh]] * Если используете программу putty, то: * используете уже знакомую Вам программу puttygen: * *puttygen -l путь_до_закрытого_ключа* * в результате будет что-то вида: ==ssh-rsa 2048 4c:d1:96:6f:dd:e5:67:ce:55:8b:fb:38:b2:a2:63:c5== * более подробно — [[SSHKeyGenUsePuTTY][на странице про генерирование и использование ключей в PuTTY]]
This topic: Main
>
WebHome
>
SShKeys
Topic revision: revision 2 (raw view)
Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki?
Send feedback