kk
Default banner
Разное
426 450 постов45 подписчиков
Всяко-разно
1

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

Добрый день!

Допустим у вас есть Linux сервер, и работаете вы с ним, подключаясь к нему по протоколу SSH. Эта аббревиатура образовалась от английского словосочетания Secure Shell (безопасная оболочка).

Как обычно происходит подключение с одной Linux машины к другой по SSH? Вы выполняете команду:


  1. ssh имя-пользованеляn@ip-адрес

Где указываете учетную запись и адрес сервера. После чего у вас запрашивается пароль от учетной записи. И после ввода пароля, вас пускают управлять удаленной машиной.

Но допустим вы захотите выполнить локальный скрипт на удаленной машине по SSH. И вам нужно, чтобы авторизация прошла без запроса пароля.

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

По другому, без использования пароля, авторизоваться можно. Для этого используются ключи. Ключ это просто файл. Он генерируется на сервере. Забирается к себе на локальный компьютер. Устанавливается у себя на компьютере, и далее используется, чтобы с этого компьютера подключаться к серверу без пароля.

Действия, описанные в этой статье были проделаны на Ubuntu 16.04. В конце статьи также показано как проделать тоже самое, но заходить по ssh будем с FreeNAS-9.3 на ESXi-5.1.

Подключаемся с Ubuntu 16.04 на Ubuntu 16.04.

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

Установим OpenSSH (если еще не установили):


  1. sudo apt install openssh-server

Такой командой можете добавить службу sshd в автозагрузку


  1. sudo systemctl enable sshd

Если затем вы захотите удалить службу sshd из автозагрузки, то выполните:


  1. sudo systemctl disable sshd

Нам нужно отредактировать конфигурационный файл /etc/ssh/sshd_config:


  1. sudo nano /etc/ssh/sshd_config

Там нужно найти и привести к такому виду 3 опции


  1. SAAuthentication yes
  2. PubkeyAuthentication yes
  3. AuthorizedKeysFile %h/.ssh/authorized_keys

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


  1. sudo service ssh restart

Далее сгенерируем ключи:


  1. ssh-keygen -t rsa

Нужно будет придумать название, например my-rsa-key.

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

Ключ сгенерируется, и в папке, где вы находитесь у вас должны появиться 2 файла:


  1. my-rsa-key
  2. my-rsa-key.pub

Первый можно назвать ключом, а второй замок.

Далее запишем публичный ключ (замок) на сервер в файл ~/.ssh/authorized_keys и выставим права на файл:


  1. cat melfis.ru-rsa.pub >> ~/.ssh/authorized_keys
  2. chmod 600 ~/.ssh/authorized_keys

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


  1. scp ИМЯ_ПОЛЬЗОВАТЕЛЯ@АДРЕС_СЕРВЕРА:~/my-rsa-key ~/.ssh/

После того, как ключ взят, нужно его установить:


  1. ssh-add ~/.ssh/my-rsa-key

Далее введете пароль, который устанавливали на ключик и все.

После проделанного можете попробовать зайти на удаленный сервер по SSH и пароль у вас не спросят.

Дополнительно можно на сервере в конфигурационном файле /etc/ssh/sshd_config отключить аутентификацию по паролю изменив опцию:


  1. sudo nano /etc/ssh/sshd_config
  2. PasswordAuthentication no

Подключаемся с FreeNAS-9.3 к ESXi-5.1

Генерировать ключи будем на FreeNAS:


  1. ssh-keygen -t rsa

Я назвал ключи - freenas-esxi

Передаем публичный ключ на ESXi


  1. scp freenas-esxi.pub ip-esxi:/freenas-esxi.pub

На ESXi прописываем публичный ключ в файл авторизации:


  1. cat > /etc/ssh/keys-root/authorized_keys

На FreeNAS устанавливаю закрытый ключ, установить командой ssh-add не вышло, поэтому проделал следующее:


  1. killall ssh-agent
  2. cd ~/.ssh
  3. touch config
  4. eche IdentityFile ~/freenas-esxi >> ./config

Далее с FreeNAS подключаюсь к ESXi без запроса пароля:


  1. ssh ip-esxi

Хорошего дня!