Генерируем открытый/закрытый SSH-ключ в Linux

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

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

$ ssh-keygen -t rsa

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

$ ssh-keygen -t dsa 

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

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

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

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

ввод идентификационной фразы

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

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

- автоматический режим, введите команду:

ssh-copy-id username@remote.host

- ручной режим: подключитесь к удаленному хосту с помощью SSH и переместите открытый ключ в его целевую директорию с помощью команд: 

$ cat id_rsa.pub >> ~/.ssh/authorized_keys
$ rm id_rsa.pub

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

$ chmod -u=rwX,go= ~/.ssh
$ chmod -u=rw,go=r ~/.ssh/authorized_keys

Готово.

Если не помогло

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

$ sudo nano /etc/ssh/sshd_config

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

RSAAuthentication yes
PubkeyAuthentication yes 
PasswordAuthentication no

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

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

$ sudo /etc/init.d/ssh reload

На этом все.

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

$ ssh -i /path-to-private-key username@remote-host-ip-address

Источник »

Работа с помощью ssh-agent

Хорошая практика иметь приватные ключи только на одной машине, поэтому следует использовать ssh-agent. Итак, запустим его локально:

ssh-agent

* если выдается сообщение: The agent has no identities. то нужно идентифицировать своего агента, с помощью команды: ssh-add

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

ssh-add -l

* если выдается сообщение: Could not open a connection to your authentication agent. то выполните команду:

eval "$(ssh-agent)"

Подключаемся к удаленному серверу и разрешаем использовать ssh-agent создав файл .ssh/config в котором пропишем

Host *
  ForwardAgent yes

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

ssh-add -L

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

git clone git@bitbucket.org:test/site.ru.git

все должно пройти как по маслу. А если нет и например:

$ ssh-add -l
The agent has no identities.

то выставим правильные права доступа на файлы:

chmod -u=rw,og= ~/.ssh/id_rsa.pub
chmod -u=rw,og= ~/.ssh/id_rsa
ssh-add ~/.ssh/id_rsa

в результате получим:

Identity added: /home/lebnik/.ssh/id_rsa (/home/lebnik/.ssh/id_rsa)

проверим:

ssh-add -L

выдаст что-то вроде:

ssh-rsa AAA...my-key

Следующая проблема, с которой я столкнулся это, когда я подключился по ssh к серверу, но агент не пробросился и выполняя на сервере команду:

ssh-add -l

я получал ошибку:

Could not open a connection to your authentication agent.

Решение, добавлять параметр -A при подключении по ssh, например:

ssh -A root@myhost

Удачки.

Источники: 1

Оцени публикацию:
  • 0,0
Оценили человек: 0

Похожие статьи:


Комментарии посетителей:
  • Обычно, в файл ~/.bashrc я добавляю строчки:
    eval "$(ssh-agent)"
    ssh-add ~/.ssh/id_rsa
    и это решает проблему с агентом
    06 сентября 2017, 08:14 коммент полезен : 0 # Гость
Предложения и пожелания:
Ваше имя:
Ваш E-mail:
Сколько будет Οдин + Τри
Главная
X

Новые заметки:

Про что мы забываем когда делаем оценку задачи по времени

Список вопросов для собеседования разработчика по телефону

Symfony2 авторизация без Doctrine2 для чайника

Phpstorm7 LiveEdit

Жесткий хабр или не хабр, тогда кто?

Яндекс.Деньги мошенничество

Как узнать какие страницы в поиске яндекса или это секрет

Последние комменты:

Yapro CMS:

Здравствуйте, Гость | Войти | Регистрация | Карта сайта | RSS ленты | Ошибка в тексте? Выделите её мышкой и нажмите: Ctrl + Enter

youtube.com/watch?v=7hFivbgIEqk

При полном или частичном использовании материалов данного сайта, ссылка на сайт "yapro.ru" обязательна как на источник информации.
Автоматический импорт материалов и информации с сайта запрещен.
Copyrights © 2007 - 2018 YaPro.Ru

Главная » Веб-мастеру » Unix »