Подключение к серверу 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
— подключение будет инициировано. Удобно. Также можно поступить загрузив конфигурацию и дополнить ее настройками, а потом сохранить.
Копирую сгенированный ключ – публичную его часть на систему srv-bionic
123 | ekzorchik@srv-bionic:~$ mkdir .ssh ekzorchik@srv-bionic:~$ nano .ssh/authorized_keys |
После не забываем сохранить внесенные изменения.
Шаг №4: теперь нужно на системе Ubuntu 18.04
настроить серверную часть SSH
на работу через публичный ключ, а не пароль:
123456789101112131415161718192021222324252627 | ekzorchik@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
дабы сохранить изменения в конфигурации.
Затем перехожу в элемент настройки (Category) Session
и нажимаю Open
, открывается консоль ниже, где от сервера идет запрос на указание логина:
1 | Login as: указываю ekzorchik |
И тут же происходит подключение к системе через публичный ключ, который я для этой системы сгенерировал выше и добавил в фай .ssh/authorized_keys
12345 | Authentication 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
Вам будет отказано:
123 | PuTTY Fatal Error No supported authentication methods available (server sent: publickey) |
Кстати, безопасный способ, но получается нужно где-то хранить приватный ключ, т.к. имея его ты уже на шаг ближе к серверу, логин то как-нибудь то подберем.
Шаг №5: А вот в этом случае на этапе генерации публичного ключа можно добавить парольную защиту:
Key passphrase:
Confirm passphrase:
Тем самым при доступе к системе Ubuntu
у Вас будет запрашиваться парольная фраза на расшифровку, а только после происходить подключение.
123456789 | Using 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 Ke
y – выбираю приватный ключ и если он не защищен уже изначально добавляем защиту паролем заполняя поля
- 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.