Главная » Компьютерные сети » Настройка доступа пользователей Linux без пароля с запросом открытых и приватных ключей

Настройка доступа пользователей Linux без пароля с запросом открытых и приватных ключей

Использование набора открытых/закрытых ключей для входа в удаленную систему Linux или запуска команд с помощью ssh без пароля может быть очень удобным, но настройка немного сложней чем обычно.
Настройка учетной записи в системе Linux, которая позволяет вам входить в систему или выполнять команды удаленно без пароля, не так уж и сложна как кажется, но есть небольшие нюансы корректировки содержимого некоторых файлов. В этом посте мы запустим процесс, а затем разберем скрипт, который поможет произвести специальные настройки.
После настройки, доступ без пароля, особенно полезен, если необходимо запустить ssh-команды в скрипте, для автоматического запуска.
Важно отметить, что вы не должны использовать одну и ту же учетную запись пользователя в обеих системах. Фактически, вы можете использовать свой открытый ключ для нескольких учетных записей в системе или для разных учетных записей в нескольких системах.
Ниже описываем как это сделать.
С какой системы начать?
Во- первых, вам нужно запустить систему, из которой вы хотите выдавать команды. Это система, которую вы будете использовать для создания ключей ssh. Вы также должны иметь доступ к учетной записи на удаленной системе, на которой будут выполняться эти команды.
Чтобы далее мы понимали какая система используется, мы будем называть первую систему в нашем скрипте «boss», так как она будет выдавать команды для запуска в другой системе.

Таким образом, командная строка первой системы:
boss$

Если у вас еще нет пары открытый/закрытый ключ (public/private key), настроенной для вашей учетной записи в системе boss, создайте ее с помощью команды, приведенной ниже. Обратите внимание, что вы можете выбирать между различными алгоритмами шифрования. Обычно используют либо RSA, либо DSA. Обратите внимание, что для доступа к системе без ввода пароля вам нужно будет ввести пароль для двух приглашений, показанных в диалоговом окне ниже.
Если у вас уже есть пара открытых и закрытых ключей, связанная с этой учетной записью , пропустите этот шаг.
boss$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/myself/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): <== just press the enter key
Enter same passphrase again: <== just press the enter key
Your identification has been saved in /home/myself/.ssh/id_rsa.
Your public key has been saved in /home/myself/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:1zz6pZcMjA1av8iyojqo6NVYgTl1+cc+N43kIwGKOUI myself@boss
The key’s randomart image is:
+—[RSA 3072]—-+
| . .. |
| E+ .. . |
| .+ .o + o |
| ..+.. .o* . |
| … So+*B o |
| + …==B . |
| . o . ….++. |
|o o . . o..o+ |
|=..o.. ..o o. |
+—-[SHA256]—–+

Команда, показанная выше, создаст как открытый, так и закрытый ключ. Один ключ необходим для шифрования, другой для расшифрования кода первого ключа. Таким образом, связь между этими ключами имеет решающее значение, и закрытый ключ никогда не должен быть общим. Вместо этого он должен оставаться в вашей папке ssh в системе boss.
Обратите внимание, что ваш открытый и закрытый ключи, при создании, будут сохранены в вашей папке ssh.
Следующий шаг-скопировать открытый ключ в систему, к которой вы хотите получить доступ из системы boss, без использования пароля. Вы можете использовать scp для этого, хотя на этом этапе вам все равно нужно будет ввести свой пароль. В данном примере эта система называется целевой (target).
boss$ scp .ssh/id_rsa.pub myacct@target:/home/myaccount
myacct@target’s password:
На целевой системе (той, на которой будут выполняться команды) вам нужно будет установить свой открытый ключ. Если его нет в каталоге ssh (например, если вы никогда не использовали ssh в этой системе), выполнение команды ниже настроит его для вас:
target$ ssh localhost date
target$ ls -la .ssh
total 12
drwx—— 2 myacct myacct 4096 Jan 19 11:48 .
drwxr-xr-x 6 myacct myacct 4096 Jan 19 11:49 ..
-rw-r–r– 1 myacct myacct 222 Jan 19 11:48 known_hosts
Все еще находясь в целевой системе, вам необходимо добавить открытый ключ, который вы передали из системы «boss» в вашу папку .ssh / файл authorized_keys. Приведенная ниже команда добавит ключ в конец файла, если он уже существует, или создаст файл и добавит ключ, если файл не существует.
target$ cat id_rsa.pub >> .ssh/authorized_keys
Затем вам нужно убедиться, что разрешения для вашего файла authorized_keys установлены на значение 600. Если нет, запустите команду chmod 600 .ssh/authorized_keys
target$ ls -l authorized_keys
-rw——- 1 myself myself 569 Jan 19 12:10 authorized_keys
Также убедитесь в том, что разрешения на вашем каталоге ssh в целевой системе имеет значение 700. Если нет, то исправьте разрешения с помощью команды chmod 700 .ssh.
target$ ls -ld .ssh
drwx—— 2 myacct myacct 4096 Jan 14 15:54 .ssh
После выполнения вышенаписанных действий у вас должна появиться возможность выполнять команды удаленно к вашей целевой системе без ввода пароля. Это должно работать, если учетная запись целевого пользователя в целевой системе не имеет старого открытого ключа для того же пользователя и узла, с которого вы пытаетесь подключиться. Если это так, вы должны иметь возможность удалить предыдущую (конфликтующую) запись.