В статье показано как создать ssh ключи на Linux, как их передать на другой сервер, и как протестировать подключение.
Введение
Для того чтобы иметь возможность подключаться с одного Linux сервера на другой по ssh без пароля вы должны настроить аутентификацию по ssh ключам. Для этого на клиенте генерируется пара ключей: приватный и публичный. Затем публичный ключ передаётся на второй сервер. И пользователь с первого сервера, с помощью приватного ключа может подключиться ко второму серверу, где с помощью публичного ключа проверяется приватный ключ подключаемого.
Проделанные команды из этой статьи должны работать на Debian или Ubuntu от самых старых до последних версий.
В этой статье «Сервер 1» будет выступать в качестве клиента, а «Сервер 2» в качестве сервера. А также, все подключение будет выполняться с одного сервера на второй сервер под пользователем root.
Практика
Подготавливаем «Сервер 2»
На удалённый сервер, разрешим подключение по ssh под пользователем root с использованием пароля. Для этого отредактируем конфиг /etc/ssh/sshd_config. После изменения конфига перезапустим службу ssh:
# nano /etc/ssh/sshd_config PermitRootLogin yes # systemctl restart ssh
Дополнительно, на Ubuntu придумаем пароль для пользователя root:
$ sudo passwd root
На Debian это делать не нужно, так-как там вы придумывали пароль root пользователю при установке системы.
Создаём ssh ключи на «Сервер 1»
Выполняем команды под пользователем root.
На «Сервер 1», сгенерируем пару SSH ключей, с помощью команды ssh-keygen. Мануал по этой утилите можете посмотреть здесь.
# ssh-keygen
После этого в каталоге .ssh появится пара ключей: id_rsa — приватный ключ, id_rsa.pub — публичный ключ.
# ls -l .ssh/ total 14 -rw------- 1 root root 1679 май 16 11:30 id_rsa -rw-r--r-- 1 root root 392 май 16 11:30 id_rsa.pub -rw-r--r-- 1 root root 222 май 16 11:30 known_hosts
Передаём ssh ключи на «Сервер 2»
Передадим публичный ключ на удалённый сервер с помощью утилиты ssh-copy-id. Мануал по этой утилите можете посмотреть здесь.
# ssh-copy-id 192.168.0.12
При этом вы должны указать ip адрес удалённого сервера. И ввести пароль root пользователя, так как обмен ключами ещё не происходил и аутентификация по ssh ключам не работает.
Запретим подключаться к серверу root пользователю с паролем
Вернёмся на «Сервер 2» и снова запретим подключаться root пользователю с использованием пароля:
# nano /etc/ssh/sshd_config PermitRootLogin prohibit-password # systemctl restart ssh
Тестовое подключение
Для тестирования возвратимся на «Сервер 1» и попробуем подключиться с него на «Сервер 2».
# ssh 192.168.0.12 hostname
В моём примере я подключаюсь к серверу с ip адресом 192.168.0.12 под пользователем root. И сразу же выполняю на нём команду hostname. Так я получаю имя удалённого сервера.
Другие мои статьи по теме ssh на linux доступны здесь.
Если понравилась статья, подпишитесь на мой канал в VK.