Подключение к серверу Ubuntu Bionic Server через Putty + Public Key

Т.к. на работе предыдущий системный администратор был поклонником настройки доступа ко всем сервисам (к примеру, в интернете, в локальной сети) на основе публичного ключа, т.е. связка логин и пароль не используется вообще и никак. А было это сделано применяя клиент Putty который установлен на каждой рабочей станции системного администратора, а приватные ключи в определенной папке на файловом ресурсе где доступ к ней имеют все также администраторы и данный путь прописывается в клиенте Putty.

Но это так, личные заморочки.

Сегодня я хочу разобрать в виде пошаговой заметке как настраивается доступ к системе из Windows 10 посредством публичного ключа.

Что понадобится:

Шаг №1: W10X64 Pro на нее устанавливаем пакет putty-64bit-0.72-install.msi это та версия, которая у меня под рукой, Вы же скачиваете самую последнюю на текущий момент и устанавливаете в систему.

Нажимаете Win – набираете puttygen и в найденном совпадении нажимаете на «PuTTYgen» (это приложение) . В этом приложении нажимаете (Generate a public/private key pair) Generate предварительно выставив тип генерируемого ключа:

  • Type of key to generate: ->
  • Curve to use for generating this key: ->

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

Создаем публичный ключ:

Создаю пару публичный и приватный ключ

Затем когда ключ выше сгенерировался, нажимаю

Save public key и Save private key и пока сохраняю его на рабочий стол:

(Именование выбираю произвольно)

Сохраняю публичный ключ и приватный ключ

Шаг №2: устанавливаем систему Ubuntu 18.04 Server в локальной сети, к примеру через сервис FOG.

Шаг №3: Через клиент Putty с Windows 10 Pro x64 подключаюсь к системе «Шаг №2»

  • Host Name (or IP address): 172.33.33.27
  • Port: 22
  • Connection type: SSH
  • Saved Session: ввожу IP системы к которой подключаюсь (172.33.33.27) и нажимаю Save. Теперь если мне понадобиться подключиться к этой системе я выделю сохраненную, нажму Load и Open — подключение будет инициировано. Удобно. Также можно поступить загрузив конфигурацию и дополнить ее настройками, а потом сохранить.
Создаю подключение к системе Ubuntu в клиенте Putty

Копирую сгенированный ключ – публичную его часть на систему srv-bionic

123ekzorchik@srv-bionic:~$ mkdir .ssh ekzorchik@srv-bionic:~$ nano .ssh/authorized_keys
Копирую публичный ключ с Windows 10 на Ubuntu 18.04 Server

После не забываем сохранить внесенные изменения.

Шаг №4: теперь нужно на системе Ubuntu 18.04 настроить серверную часть SSH на работу через публичный ключ, а не пароль:

123456789101112131415161718192021222324252627ekzorchik@srv-bionic:~$ sudo nano /etc/ssh/sshd_config Port 22 PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2 PermitEmptyPasswords no ChallengeResponseAuthentication no UsePAM yes X11Forwarding yes PrintMoth no AcceptEnv LANG LC_* Subsystem sftp /vusr/lib/openssh/sftp-server PasswordAuthentication no AllowUsers ekzorchik ekzorchik@srv-bionic:~$ sudo systemctl restart ssh

По дополнительным параметрам советую почитать man sshd_config

После закрываю соединение к системе Ubuntu 18.04 через клиент Putty (текущее) и создаю заново, но только в клиенте Putty для подключения к этой системе указываю что использовать публичный ключ:

putty - (Category) Session - 172.33.33.27 - Load - (Category) SSH - Auth -

  • Private key file for authentication: Browse и указываю путь до приватного ключа, я его сохранил на рабочий стол вот и указываю его.

Затем перехожу в (Category) Session и нажимаю Save дабы сохранить изменения в конфигурации.

В клиенте Putty редактирую настроенное соединение добавление приватного ключа при подключение к настроенной системе

Затем перехожу в элемент настройки (Category) Session и нажимаю Open, открывается консоль ниже, где от сервера идет запрос на указание логина:

1Login as: указываю ekzorchik

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

12345Authentication with public key “ecdsa-key-20191227” Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-72-generic x86_64) ekzorchik@srv-bionic:~$
Подключение на основе публичного ключа произведено

Если удобно, то можно в настройках соединения сохранить настройки подключения и предопределить под какой учетной записью производить авторизацию: (Category) Connection - Data

  • Auto-login username: указываем ekzorchik (т.е. ту учетную запись для которой настроен доступ через публичный ключ)
В настройках подключения можно указать логин дабы не вводить его при подключении

На заметку: но если за вашей системой будут работать несколько человек, то не лишним будет не указывать username. А если все же указать, то выбрав сохраненные настройки (Session) – (Saved Session) выбираю сохраненное соединение и нажимаю Load, а затем Open соединение то подключение к системе Ubuntu произойдет быстро и без какого-либо ввода от Вас. Быстро и удобно.

Как загружать сохраненное подключение и подключаться

Если Вы будете или кто-то другой инициализировать подключение без публичного ключа, то в доступе к системе Ubuntu Вам будет отказано:

123PuTTY Fatal Error No supported authentication methods available (server sent: publickey)
Попытка подключения без приватного ключа завершится уведомление что так не получится

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

Шаг №5: А вот в этом случае на этапе генерации публичного ключа можно добавить парольную защиту:

  • Key passphrase:
  • Confirm passphrase:

Тем самым при доступе к системе Ubuntu у Вас будет запрашиваться парольная фраза на расшифровку, а только после происходить подключение.

Настройка защиты приватного ключа парольной фразой
123456789Using username “ekzorchik” Authenticating with public key “ecdsa-key-20191227” Passphrase for key “ecdsa-key-20191227”: ввожу 712mbddr@@@ Welcome to Ubuntu 18.04.3 LTS (GNU/LINUX 4.15.0-72-generic x86_64) ekzorchik@srv-bionic:~$
В момент подключения запрос на расшифровку секретного ключа и после доступ будет произведен

Кстати, добавление парольной фразы к приватному ключу можно задать в любой момент, для этого запускаем утилиту puttygen: File – Load private Key – выбираю приватный ключ и если он не защищен уже изначально добавляем защиту паролем заполняя поля

  • Key passphrase:
  • Confirm passphrase:

А в конце главное не забыть нажать на кнопку Save Private Key окна PuTTY Key Generator и записать его поверх редактируемого.

На системе Ubuntu делать ничего не нужно.

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

Итого шаги:

  • Через приложение Puttygen создаем публичный ключ, сохраняем его и копируем его содержимое в файл на Ubuntu системе .ssh/authorized_keys
  • Защищаем приватный ключ парольной фразой и сохраняем его в безопасное место
  • Запускаем клиент Putty, настраиваем подключение к системе Ubuntu, указываем если нужно Login, и путь до приватного ключа и подключается.

На этом пока все, я рассмотрел, как с Windows 10 настроить авторизацию на удаленной системе Ubuntu через доступ к системе посредством клиента Putty на основе публичных ключей, а не как всегда обычно используется связка логин + пароль + port: 22. С уважением, автор блога Олло Александр aka ekzorchik.