---
title: "Авторизация SSH по ключу"
description: "В этой небольшой статье я покажу как подключаться по ssh используя связку ключей. В статье подразуме..."
author: "semenenko"
published: "2019-03-11T14:13:35+00:00"
modified: "2019-05-24T13:31:39+00:00"
locale: "ru"
canonical_url: "https://yvision.kz/post/avtorizaciya-ssh-po-klyuchu-828053"
markdown_url: "https://yvision.kz/post/avtorizaciya-ssh-po-klyuchu-828053/markdown"
site_name: "Yvision.kz"
---

# Авторизация SSH по ключу

> В этой небольшой статье я покажу как подключаться по ssh используя связку ключей. В статье подразуме...

В этой небольшой статье я покажу как подключаться по ssh используя связку ключей. В статье подразумевается что подключение к серверу осуществляется из операционной системы linux (например linux mint).

Связка ключей состоит из открытого и закрытого ключа. Закрытый ключ сохраняется на стороне клиента, а открытый загружается на сервер в специальный файл ~/.ssh/authorized_keys.

Алгоритм авторизации по ключу следующий.

Клиент инициирует соединение с сервером;

Сервер отправляет случайное сообщение клиенту;

Клиент зашифровывает закрытым ключом это сообщение, и посылает серверу;

Сервер расшифровывает это сообщение открытым ключом и если это сообщение верное, то клиент считается аутентифицированным.

Для начала нужно создать связку ключей, делается это с помощью утилиты ssh-keygen.

alex@pc-alex:~$ ssh-keygen

![](https://storage.yvision.kz/images/user/356932/c94e83dd42d9c1e9e25617c01f59ba.png)

В самом начале у вас система спросит, в какой файл записать ключ (Enter file in which to save the key), если ничего не менять, то система поместит ключ в файл ~/.ssh/id_rsa

Дальше система просит придумать пароль закрытому ключу (Enter passphrase (empty for no passphrase)), его можно оставить пустым, тогда при авторизации на сервере вам не нужно будет вообще вводить пароль.

Но если придумать пароль, то это повысит безопасность:

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

При утечки закрытого ключа, использовать его можно только узнав еще и пароль.

Закрытый ключ сохраняется в файле ~/.ssh/id_rsa

Открытый в файле ~/.ssh/id_rsa.pub

Дальше нам нужно открытый ключ загрузить на сервер. Например сервер с операционной системой Debian 9.6.

Я хочу подключаться с помощью ключа к серверу под пользователем root. Но для загрузки на сервер нужно хотя бы раз подключится используя пароль.

Debian запрещает по ssh подключаться к себе пользователем root по паролю. Поэтому для начала нужно разрешить подключение по паролю для пользователя root.

Для этого вначале подключимся обычным пользователем:

alex@pc-alex: ssh user@192.168.5.240

Зайдем под пользователем root:

user@debian9:~$ su -

Отредактируем конфигурационный файл сервера SSH.

root@debian9:~# nano /etc/ssh/sshd_config

Поправим следующую опцию:

PermitRootLogin yes

Сохраним конфигурационный файл и перезагрузим службу ssh:

root@debian9:~# systemctl restart ssh

Попробую отключиться от сервера и подключится как root пользователь:

root@debian9:~# exit

user@debian9:~$ exit

alex@pc-alex:~$ ssh root@192.168.5.240

root@192.168.5.240's password:

root@debian9:~# exit

Как видим используя пароль пользователем root к серверу мы можем подключиться, что на самом деле не безопасно.

Далее нужно передать открытый ключ на сервер, делается это командой ssh-copy-id. Вот так:

alex@pc-alex:~$ ssh-copy-id root@192.168.5.240

![](https://storage.yvision.kz/images/user/356932/f13fd0df96643ab137c449e6b83153.png)

При этом открытый ключ записывается на сервер в файл ~/.ssh/authorized_keys. Как вариант можно было все выполнить вручную. Подобной командой:

$ cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys»

Можете себя поздравить. После проделанного вы можете подключаться к серверу с помощью ключа. Но нам еще нужно не забыть запретить вход по паролю на сервер:

alex@pc-alex:~$ ssh root@192.168.5.240

Enter passphrase for key '/home/alex/.ssh/id_rsa':

root@debian9:~# nano /etc/ssh/sshd_config

Редактируем опции:

PermitRootLogin prohibit-password

PasswordAuthentication no

Сохраняем конфигурационный файл, и перезагружаем службу сервера ssh:

root@debian9:~# systemctl restart ssh

Если удаленный сервер с операционной системой Centos 7, то под пользователем root вы сразу сможете подключиться с помощью пароля. Вам остается только загрузить на сервер открытый ключ:

alex@pc-alex:~$ ssh-copy-id root@192.168.5.239

И настроить конфигурационный файл сервера ssh, так как nano нет в Centos сразу после установки, то можно воспользоваться редактором vi:

[root@centos7 ~]# vi /etc/ssh/sshd_config

Редактируем уже знакомые опции:

PermitRootLogin prohibit-password

PasswordAuthentication no

И перезагружаем службу сервера ssh, в centos она называется sshd:

[root@centos7 ~]# systemctl restart sshd

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

alex@pc-alex:~$ ssh user@192.168.5.239 # centos

user@192.168.5.239: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

alex@pc-alex:~$ ssh user@192.168.5.240 # debian

user@192.168.5.240: Permission denied (publickey).

Кстати, мы можем поделиться с кем нибудь нашим приватным ключом (и паролем от него), тогда этот пользователь также сможет подключиться к серверу. Достаточно только создать у этого пользователя файл в домашнем каталоге /root/.ssh/id_rsa с таким же содержимым что и у вас и с правами rw только для владельца, больше никаких прав не должно быть. И этот пользователь также сможет подключаться к серверу со своего компьютера.

Но лучше не передавать таким образом свой ключ, лучше создать у второго пользователя свою связку ключей и передать открытый ключ на сервер. При этом он дозапишется в уже знакомый файл ~/.ssh/authorized_keys на сервере и второй пользователь со своего компьютера сможет подключаться к серверу с помощью своих ключей.

На этом все, спасибо за внимание!

Больше моих статей на IT темы можете найти тут.

---

Source: [https://yvision.kz/post/avtorizaciya-ssh-po-klyuchu-828053](https://yvision.kz/post/avtorizaciya-ssh-po-klyuchu-828053)