ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Как использовать ssh-copy-id в Ubuntu

Установка правильных разрешений .ssh/config

Одним из полезных инструментов SSH является ssh-copy-id, который используется для установки ключа SSH на удаленном сервере для входа на сервер без предоставления пароля для входа. Таким образом, с помощью этого инструмента можно легко реализовать единый вход и автоматический вход без пароля с использованием SSH. Он копирует открытые ключи в файл ~/.ssh/authorized _keys удаленного хоста, создавая файл и каталог, если требуется, но не изменяет разрешения любого существующего файла или папки. В этой статье объяснено, как можно использовать команду ssh-copy-id для SSH-соединения.

 

Предпосылки:

Перед тем, как приступить к действиям этой статьи, необходимо выполнить следующие действия.

Включите службу SSH в Ubuntu, если она не была включена ранее.

Сгенерируйте пары ключей SSH для выполнения команд на удаленном сервере. Выполните следующую команду, чтобы создать открытый и закрытый ключи. Закрытый ключ будет храниться на удаленном сервере, а открытые ключи будут надежно храниться на клиенте.

$ ssh-keygen -t rsa

 

Выполните следующую команду, чтобы открыть файл sshd_config с помощью редактора nano и добавить некоторые необходимые конфигурации.

$ sudo nano /etc/ssh/sshd_config

 

Добавьте в файл следующие строки, чтобы включить учетную запись root и аутентификацию на основе пароля.

PasswordAuthentication yes

PermitRootLogin yes

 

Выполните следующую команду, чтобы перезапустить службу SSH.

$ sudo service ssh restart

Синтаксис:

Синтаксис команды ssh-copy-id приведен ниже. Он поддерживает несколько параметров, которые будут объяснены позже.

ssh-copy-id [-lv] [-i keyfile] [-o option][-p port] [user@]hostname

Различные варианты команды ssh-copy-id:

В этой части статьи описаны цели использования различных параметров команд ssh-copy-id.

Вариант Цель
-i keyfile Он используется для копирования открытого ключа, хранящегося в файле . Его можно использовать несколько раз.
-l Он используется для копирования ключей, которые в настоящее время хранятся у ssh-agent. Он используется по умолчанию, если не указана опция -i.
-o ssh-option Он используется для передачи параметра напрямую ssh . Его можно использовать несколько раз.
-p port Он используется для подключения к указанному порту на удаленном хосте вместо порта по умолчанию, который равен 22.
-v Он используется для передачи значения -v в ssh.

 

Скопируйте ключ на сервер:

Вы должны авторизовать открытый ключ на сервере для установления SSH-соединения без использования пароля. После создания открытого ключа команда ssh-copy-id может добавить ключ в качестве авторизованного ключа на сервер.

Выполните следующую команду на сервере, чтобы добавить любой вновь созданный открытый ключ в качестве авторизованного ключа сервера.

$ ssh-copy-id andreyex@andreyex-VirtualBox

 

Ранее упоминалось, что параметр -i используется с командой ssh-copy-id для добавления открытого ключа из файла. Если вы сохранили вновь созданный открытый ключ в файле по умолчанию, имя файла будет id_rsa.pub . Но вы задали любое имя файла при создании пар ключей, а затем используйте это имя файла с параметром -i. Я сохранил открытый ключ в файле по умолчанию.

Выполните следующую команду на сервере, чтобы добавить открытый ключ на сервер. Команда скопирует ключ на сервер и настроит его для добавления ключа в файл authorized_keys для доступа к серверу.

$ ssh-copy-id -i ~/.ssh/id_rsa andreyex@andreyex-VirtualBox

 

Проверить соединение:

После добавления ключа к серверу вы должны проверить, может ли клиентская машина подключиться к серверу. Имя пользователя серверной машины здесь «andreyex», а клиентской машины – «master». Итак, сначала войдите на клиентский компьютер, чтобы проверить соединение.

Выполните следующую команду, чтобы добавить идентификатор сервера на клиентский компьютер.

$ ssh-add

 

Выполните следующую команду ssh без какой-либо опции, чтобы установить соединение с сервером. Если на сервере включена аутентификация на основе пароля, пользователь должен предоставить действующий пароль для установления соединения с сервером.

$ ssh andreyex@andreyex-VirtualBox

 

Следующие выходные данные показывают, что идентификатор сервера был добавлен к клиентской машине. Затем пароль пользователя сервера запросил соединение, потому что здесь на сервере включена аутентификация на основе пароля. Имя пользователя изменяется на «andreyex» с «master» в командной строке, что указывает на то, что соединение было установлено правильно после ввода действительного пароля.

Если вы хотите указать имя файла открытого ключа с указанием места для установления соединения с сервером, выполните следующую команду ssh с параметром -i. Это потребует, если вы сохраните открытый ключ в определяемом пользователем имени файла. Во время генерации ключа я использовал имя файла по умолчанию – id_rsa.

$ ssh -i ~/.ssh/id_rsa andreyex@andreyex-VirtualBox

 

Как и прежде, он запросит пароль, чтобы установить соединение с сервером. Выходные данные показывают, что соединение было установлено правильно, и имя пользователя командной строки изменилось. Вы можете изменить файл конфигурации сервера, чтобы отключить аутентификацию на основе пароля, если вы не хотите предоставлять пароль всякий раз, когда вы хотите подключиться к серверу.

 

Заключение:

Использование команды ssh-copy-id для подключения к удаленному хосту было описано в этой статье с использованием двух учетных записей пользователей локального хоста, чтобы помочь читателям правильно узнать функцию этой команды.

Exit mobile version