Генерируем открытый/закрытый 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

youtube.com/watch?v=7hFivbgIEqk

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

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