Создание и использование закрытого и открытого ключа в программе ssh
Введение
Для общего понимания ключей рекомендуется прочитать
страницу посвященную ssh-ключам
Все приведенные на этой странице команды будут выполняться в терминале (xterm, terminal, konsole,...), а т.к.
ssh-доступ почти всегда подразумевает работу в командной строке, будем считать, что как выполнять команды Вы знаете.
В примерах ниже мы будем для определенности использовать RSA-ключи, хотя Вы можете использовать и другие виды ключей:
- DSA-ключи: файлы id_dsa*, длина в битах всегда 1024, как требуется по FIPS 186-2
- ECDSA-ключи: в данный момент не поддерживаются на сервере BlueGene
Создание ssh-ключа
Перед созданием ключа убедитесь, что у Вас еще нет ключа:
- ls -l ~/.ssh
- если команда отработала без ошибок и вы получили в выводе файлы id_rsa/id_dsa то у Вас уже есть нужный ключ, создавать не требуется
- если в выводе вы получили файлы id_ecdsa, то ключ у Вас есть, но в данный момент на BlueGene по такому виду ключа не зайти.
- в этом случае придется создать rsa-ключ, можно использовать простой способ
- если ssh-ключа у Вас нет, то требуется создать (можно использовать простой способ)
Простой способ создания ssh-ключей
Для создания ключа введите команду:
ssh-keygen -t rsa
В результате эта команда в интерактивном режиме создаст пару ssh-ключей (открытый и закрытый) типа RSA с длиной ключа 2048 бит.
Местоположение файлов:
- закрытый ssh-ключ (identification): ~/.ssh/id_rsa
- публичный ssh-ключ (public key): ~/.ssh/id_rsa.pub.
При создании генератор запросит пароль, если введете пустой, то пароль зашифрован не будет (если Вы забудете тот пароль, который зашифруете ключ, то воспользоваться ключом больше не сможете).
Универсальный способ создания ssh-ключей
Будем использовать ту же программу (ssh-keygen), но с дополнительными параметрами:
- -t тип-ключа (rsa/dsa/...): какой тип ключа нужен
- -b длина ключа: какой длины (для dsa длина всегда 1024)
- -f имя_ключа: в какой файл сохранять ключ, если мы хотим разные ключи для разных целей (подробнее о том, зачем это может быть нужно можете посмотреть в разделе "Использование нескольких ssh-ключей" на этой странице и на странице посвященную ssh-ключам)
Пример:
- вводите: ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_hpc
- в результате:
- в интерактивном режиме будет создана пара ssh-ключей (открытый и закрытый) типа RSA с длиной ключа 4096 бит (разумеется Вы можете зашифровать закрытую часть ключа паролем).
- ключи:
За более подробной информацией обращайтесь к справочным страницам (man ssh-keygen,
или на сайте OpenBSD ) и
F.A.Q по OpenSSH
В дальнейшем не забудьте прописать в настройках программы ssh для данного сервера путь именно к этому закрытому ssh-ключу (в параметре IdentityFile файла ~/.ssh/config), о чем — в следующем разделе.
Также рекомендуем ознакомиться с настройкой (man ssh_config
или на сайте OpenBSD).
Ниже представлен пример конфигурационного файла ~/.ssh/config:
Hostљregatta.hpc
љљљљHostnameљregatta1.cs.msu.su
љљљљUserљedu-vmk-stud-500-001
љљљљIdentityFileљ~/.ssh/id_rsa
Кратко:
- Hostname: какое имя сервера использовать
- User: под каким пользователем заходить
- IdentityFile: какой ключ авторизует пользователя, указывается его закрытая часть (т.е. закрытый ssh-ключ)
В результате команда
$ ssh regatta.hpc
осуществит вход пользователю edu-vmk-stud-500-001 на regatta1.cs.msu.su с помощью ключа ~/.ssh/id_rsa
Зачем полезно указывать ключ —
смотрите на странице по ssh ключам раздел по использованию различных ключей
Получение отпечатка ssh-ключа (fingerprint)
Для этого понадобится уже знакомая Вам программа ssh-keygen:
- ssh-keygen -l -f путь_до_публичного_ssh-ключа, т.е:
- если использовался простой метод создания, то: ssh-keygen -l -f ~/.ssh/id_rsa.pub, в результате будет что-то вида
2048 4c:d1:96:6f:dd:e5:67:ce:55:8b:fb:38:b2:a2:63:c5 user@host (RSA)
- для универсального метода Вы должны указать путь до своего ключа, в нашем примере это будет: ssh-keygen -l -f ~/.ssh/id_rsa_hpc.pub, в результате в нашем примере будет
4096 82:80:b0:ab:1c:71:c0:ab:77:bd:8f:62:83:39:15:3b user@host (RSA)
- в наших примерах мы использовали RSA-ключ, а в этом случае можно указывать и закрытый ключ (т.е. без .pub), вывод будет тот же
Пришлите вывод тому, кто спрашивает у Вас отпечаток (если хотите, можете перенаправить вывод команды ssh-keygen в файл, но можно и просто скопировать из терминала эту строку в письмо/документ/форму на сайте и т.д.)
Использование нескольких ssh-ключей