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

06.06.2018

Теги: BashCLILinuxSSHКлючКонфигурацияНастройкаСервер

SSH или Secure Shell — это зашифрованный протокол, который часто используется для взаимодействия и удаленного управления серверами. Если нужно что-либо сделать на удаленном сервере, придется воспользоваться SSH и работать через терминал.

В SSH существует несколько способов авторизации. Можно каждый раз вводить пароль пользователя или использовать более безопасный способ — ключи SSH. Что интересно, он более удобен для применения — не нужно вводить пароль.

Как работают ключи SSH?

SSH-ключи представляют собой пару — закрытый и открытый ключ. Закрытый должен храниться в закрытом доступе у клиента, открытый отправляется на сервер и размещается в файле ~/.ssh/authorized_keys.

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

Как создать ключи SSH?

Сначала необходимо создать ключи SSH на клиенте. Для этого существует специальная утилита ssh-keygen, которая входит в набор утилит OpenSSH. По умолчанию она создает пару 2048 битных RSA ключей:

$ ssh-keygen

Утилита предложит выбрать расположение и имя файла ключей. По умолчанию ключи располагаются в директории ~/.ssh/, а имена файлов будут id_rsa (закрытый) и id_rsa.pub (открытый). Открытый ключ нужно будет загрузить на сервер, а закрытый — беречь.

Затем утилита предложит ввести пароль для дополнительного шифрования ключа на диске. Использование дополнительного шифрования имеет только один минус — необходимость вводить пароль (впрочем, этого легко избежать с помощью ssh-agent). Если не нужно, можно просто нажать Enter. Тогда доступ по ключу ssh будет выполняться автоматически и не нужно будет что-либо вводить.

Загрузка ключа на сервер

Самый простой способ — использовать утилиту ssh-copy-id, которая входит в пакет OpenSSH. Но для этого нужно иметь пароль доступа к серверу по SSH:

$ ssh-copy-id -i ~/.ssh/id_rsa UserName@RemoteHost

При первом подключении к серверу, он еще не известен вашему SSH клиенту и поэтому нам будет предложено проверить и подтвердить отпечаток сервера:

The authenticity of host 'XXX.XXX.XXX.XXX' can't be established.
Are you sure you want to continue connecting (yes/no)? yes

Поэтому нужно ввести yes. Затем вводим пароль пользователя на удаленном сервере. Утилита подключится к удаленному серверу, а затем использует содержимое ключа id_rsa.pub для загрузки его на сервер в файл ~/.ssh/authorized_keys.

Теперь подключаться к серверу можно без ввода пароля:

$ ssh -i ~/.ssh/id_rsa UserName@RemoteHost

Значение опции -i — путь к файлу ключа. Если при выполнении ssh-keygen не указать имя ключа, то имя по умолчанию будет id_rsa. Ключей в ~/.ssh/ может быть много — для подключения к разным серверам. Так что лучше им давать более осмысленные имена, чтобы не запутаться. Для удобства можно создать файл ~/.ssh/config:

Host timeweb-vds
  User evgeniy
  HostName 111.111.111.111
  Port 22
  IdentityFile ~/.ssh/timeweb-vds
Host spaceweb-vds
  User evgeniy
  HostName 222.222.222.222
  Port 22
  IdentityFile ~/.ssh/spaceweb-vds

Теперь подключаться к серверу можно по имени, которое задано в Host:

$ ssh timeweb-vds
$ ssh spaceweb-vds

Отключение авторизации по паролю

Если пароль больше не будет использоваться, то для увеличения безопасности лучше его вовсе отключить. После авторизации на сервере

  • открываем конфигурационный файл /etc/ssh/sshd_config
  • выставляем директиву PasswordAuthenticatin в значение No
  • перезапускаем службу SSH: sudo systemctl restart ssh

Поиск: Bash • CLI • Linux • SSH • Ключ • Настройка • Сервер • Клиент

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.