Используем ssh ключи на Linux

В статье показано как создать 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. Так я получаю имя удалённого сервера.


Если понравилась статья, подпишись на мой канал в  VK  или  Telegram .