Как настроить защищенный вход по ssh без ввода пороля
Задача:
Необходимо войти с машины A (Linux) на машину B (Linux c OpenSSH) без ввода пароля используя SSH.
Дано:
Пользователь «username» на машине B, который имеет доступ по SSH.
Зачем это нужно:
Если честно, во всем всегда виновата лень) Я использую rsync для обновления сайта. Решил автоматизировать процесс обновления из среды emacs, т.к. надоело вводить каждый раз пароль при подключении по ssh к удаленному хосту вот и автоматизировал все на нажатие клавиши F11.
*Если будет интерестно, как использовать rsync и автоматизировать этот процесс в emacs опишу позже.
Сегодня мы рассмотрим первый этап моего «Зачем это нужно». Многие на этом могут остановиться, т.к. им будет достаточно автоматического входа на удаленных хост по ssh используя пару публичный/приватный ключи, которые мы сгенерируем сами.
Приступим к настройки входа по ssh без использования пароля:
- Сгенерируем пару ключей на машине А.
-вводим командуssh-keygen -t rsa
-оставляем имя выходного файла по умолчанию (/home/mota/.ssh/id_rsa)
-жмем ввод на запрос «фраза-пароль»
-еще раз жмем ввод для подтверждения пустой «фраза-пароль» - Теперь нам потребуется пользователь с доступом к целевой машине по ssh (username на машине B), чтобы создать в домашней директории пользователя на машине B папку «.ssh». Можно сделать это удаленно используя команду:
ssh username@henry-motu.org.ua mkdir -p .ssh
где «username» — пользователь на целевой машине Б,а «henry-motu.org.ua» — это имя целевой машины B (вместо имени машины можно использовать IP адрес целевой машины).
- Теперь зальем новый «ПУБЛИЧНЫЙ» ключ в файл .ssh/authorized_keys на целевой машине B (на henry-motu.org.ua)
cat ~/.ssh/id_rsa.pub | ssh username@B.domain.com 'cat >> ~/.ssh/authorized_keys'
- Пробуем подключиться
ssh username@B.domain.com
- Вот и все.
Базовый курс криптографии в данной статье не освещен, но для обеспечения безопасности при использованием несиметричной криптографии (когда есть пара публичный ключ и приватный ключ) следует держать в секрете приватный ключ. В нашем случае оба ключа находятся в директории /home/mota/.ssh/ (id_rsa — приватный, id_rsa.pub — публичный, а mota — текущий пользователь на машине A).
В дальнейшем, для подключения на другие удаленные машины, следует повторить 2-4 этапы.