Я как ответственный за настройку и защиту систем на базе Ubuntu, доступ к системам предоставляю только при использовании сервиса SSH: а для аутентификации логин + ключ никакого пароля, т.к. это нужно настраивать еще fail2ban для защиты сервиса от перебора. Тем самым тратятся ресурсы сервера на обработку логов. И вот я задумался, я создал приватный и публичный ключ, прописал публичный ключ на сервере, отписал тем, кто просил доступ (по согласованию), а что, если у подрядчика не Windows система, а Ubuntu. Вот об этом и будет данная практическая заметка.

Шаг №1: Посредством утилиты PuTTyGen создаю публичный и приватный ключ:

На заметку: Если подключение к Ubuntu системам (своим) на работе внутри доменной станции, то еще применяю защиту ключа парольной фразой:

  • Key passphrase:
  • Confirm passphrase:

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

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

Using username "ekzorchik".

Authenticating with public key "rsa-key-20230121"

Passphrase for key "rsa-key-20230121":

Шаг №2: Сохраняю к себе в каталог публичный ключ и приватный ключ, как:

W:\polygon\tips_key\ekzorchik@db.ekzorchik.ru_private_key.ppk

W:\polygon\tips_key\ekzorchik@db.ekzorchik.ru_public_key

Шаг №3: Базовые настройки доступа к хосту через сервис SSH:

ekzorchik@ekzorchik:~$ sudo nano /etc/ssh/sshd_config
Port 33456
PermitRootLogin no
PubkeyAuthentication yes
AuthorizedKeysFile /etc/ssh/authorized_keys
PasswordAuthentication no
PermitEmptyPasswords no
AllowGroups sshauth
ekzorchik@ekzorchik:~$ sudo service ssh restart

+ настраиваю фаервол в виде надстройки над правилами iptables, это либо ufw & firewalld

Шаг №4: Копирую содержимое public_key и прописываю его на сервере для подключения через SSH клиента:

ekzorchik@ekzorchik:~$ sudo nano /etc/ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAjhDEZVi8mZYc6B/yaOL5h6aXAYqNgV+6q5Jp/UTVZHLk/m1Bt20Vmd5OUoL0HpE0J31Lf05F0tId5ldWOJJi7B/3k/Zy0I6vL2GnprLYxOcYovxIM3ZnOgyBrbglEog/GeNLExp6vXZWgN1gC5WnRxGutzyCXkH1sNFI8baWnUftcbH15DXbgbj6t77qqjkIrOl7THwLlOhuOWrYtfzZLGTeoMIC6Bb4xrY1ZjQszj3mtbXl2jU8SBjOFsZVXjNxU/PMF7RLKV3ttqibquHHcZma4j77cY68sLfCzwAPO5Gdog7KnRnNZzGLvFviCgJAKaGin7kKF8ZgHNLw5UF/Aw== rsa-key-20230221

Шаг №5: Проверяю, как работает подключение к Ubuntuхосту через ключ, к примеру, с Windows системы. В этом случае использую клиент putty:

(Session)

  • Host Name (or IP address): db.ekzorchik.ru
  • Port: 33456
  • Connection type: SSH

(Connection) - Data

  • Auto-login username: ekzorchik

(Connection) - SSH - Auth

  • Private key file authentication: указываю путь до приватного ключа, к примеру W:\polygon\tips_key\ekzorchik@db.ekzorchik.ru_private_key.ppk

(Session)

  • Saved Sessions: ввожу для удобства db.ekzorchik.ru

и нажимаю Save

После через (Session) Saved Sessions ввожу имя под которым сохранил и нажимаю Load, а затем Open и происходит подключение к Ubuntu-системе, если есть защита парольной фразой, ввожу ее и вот я успешно подключился:

ekzorchik@ekzorchik:~$ cat /etc/hosts | grep ekzorchik
95.171.152.3    db.ekzorchik.ru
ekzorchik@ekzorchik:~$

С этим все понятно.

Шаг №6: А что если нужно с Ubuntu системы подключаться использую ключ (приватный ключ), как быть в этом случае?

к примеру, у меня есть Ubuntu 18.04 Server (Client), моя домашняя система.

Открываю через PuTTYGen - Load — выбираю ekzorchik@db.ekzorchik.ru_private_key.ppk (Приватный ключ), если защищен паролем вводим. После Conversions - Export OpenSSH key (force new file format) и сохраняю его как <имя_подключения@<имя_хоста>.pem, у меня это: W:\polygon\tips_key\ekzorchik@db.ekzorchik.ru_ubuntu_client.pem

Содержимое сконвертированного файла ekzorchik@db.ekzorchik.ru_ubuntu_client.pem:

-----BEGIN OPENSSH PRIVATE KEY-----

b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABBS

и т.д.

cGjIQjaJu8C9MHc0ReCoAAAAEAAAAAEAAAEVAAAAB3NzaC1yc2EAAAABJQAAAQEA

WoXySn0HlUZ2KkS8+59SKB6YHV5nGnjEpp5pQUvusKP+GLsCFXb9H2QrD8noZ4PQ

lrk7juWYpDs6wQcGmGNopTznnXpKBRU843OeTPG7NbM/Zan15jnZw/vzC5ArJI3l

70XCrqvWCcDJ3LeDRi617Y7BkSYnYUd1W0sU0M0tgohn52vM

-----END OPENSSH PRIVATE KEY-----

копирую pem файл на Ubuntu 18.04 Server (Client): либо Ctrl + C + Ctrl + V и сохраняю, как ekzorchik@db.ekzorchik.ru_ubuntu_client.pem, либо через WinSCP передаю.

ekzorchik@srv-bionic:~$ mkdir ~/.ssh
ekzorchik@srv-bionic:~$ nano ~/.ssh/ekzorchik@db.ekzorchik.ru_ubuntu_client.pem
ekzorchik@srv-bionic:~$ chmod 700 ~/.ssh/ekzorchik@db.ekzorchik.ru_ubuntu_client.pem
ekzorchik@srv-bionic:~$ ls -l ~/.ssh
total 8
-rwx------ 1 ekzorchik ekzorchik 1901 Feb 28 08:23 ekzorchik@db.ekzorchik.ru_ubuntu_client.pem
-rw-r--r-- 1 ekzorchik ekzorchik  444 Feb 28 08:23 known_hosts
ekzorchik@srv-bionic:~$ md5sum ~/.ssh/ekzorchik@db.ekzorchik.ru_ubuntu_client.pem
bbc422a0d6d626e233074e5ce887cec7  /home/ekzorchik/.ssh/ekzorchik@db.ekzorchik.ru_ubuntu_client.pem

Пробую подключиться к удаленному Ubuntuхосту через pem файл

ekzorchik@srv-bionic:~$ ssh -i ~/.ssh/ekzorchik@db.ekzorchik.ru_ubuntu_client.pem ekzorchik@db.ekzorchik.ru -p 33456 "uname -a"
The authenticity of host '[db.ekzorchik.ru]:33456 ([95.181.198.5]:33456)' can't be established.
ECDSA key fingerprint is SHA256:n7q85Q9Kbzd4yf9MJTyx+76lfc0PhRfOiTEDKQwrFcg.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[db.ekzorchik.ru]:33456,[95.181.198.5]:33456' (ECDSA) to the list of known hosts.
Enter passphrase for key '/home/ekzorchik/.ssh/ekzorchik@db.ekzorchik.ru_ubuntu_client.pem':
Linux ekzorchik.ru 5.4.0-139-generic #156-Ubuntu SMP Fri Jan 20 17:27:18 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
ekzorchik@srv-bionic:~$

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

ekzorchik@srv-bionic:~$ cat ~/.ssh/known_hosts
|1|xQ692QIOXV7KnGSgUzltatj09sk=|ggLg4qbSZoNruIHtxNEnPtGgI1w= ecdsa-sha2-nistp256 AAAAE3VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBGnmSGiObBMvrAuIMSusy/c2dKbKpEWvBoFIofvzbfEDmpCDCDGnmQX8gmTeoVUOniz+jAtaGYStpnSyr+d3wfU=
|1|ckP2EmvhX6AHHHJ7qozEWl6Ix88=|sY+vDrSwtZFIrq9Bxnx+P1YsMXU= ecdsa-sha2-nistp256 AAAAE3VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBGnmSGiObBMvrAuIMSusy/c2dKbKpEWvBoFIofvzbfEDmpCDCDGnmQX8gmTeoVUOniz+jAtaGYStpnSyr+d3wfU=
ekzorchik@srv-bionic:~$ 

Шаг №7: Если Вы не стали заморачиваться экспортом приватного ключа в pem файл, а просто отправили публичный и приватный ключ, к примеру разработчикам, то как им быть в этом случае:

On Ubuntu 18.04 Server

ekzorchik@srv-bionic:~$ file ekzorchik@db.ekzorchik.ru_private_key.ppk
ekzorchik@db.ekzorchik.ru_private_key.ppk: ASCII text, with CRLF line terminators
ekzorchik@srv-bionic:~$
ekzorchik@srv-bionic:~$ sudo apt-get install -y putty-tools
ekzorchik@srv-bionic:~$ puttygen ekzorchik@db.ekzorchik.ru_private_key.ppk -O private-openssh -o ekzorchik@db.ekzorchik.ru_private_key.pem
Enter passphrase to load key:
ekzorchik@srv-bionic:~$ file ekzorchik@db.ekzorchik.ru_private_key.pem
ekzorchik@db.ekzorchik.ru_private_key.pem: PEM RSA private key
ekzorchik@srv-bionic:~$ mv ekzorchik@db.ekzorchik.ru_private_key.pem ~/.ssh/
ekzorchik@srv-bionic:~$ ls -l ~/.ssh/
total 4
-rw------- 1 ekzorchik ekzorchik 1743 Feb 28 13:59 ekzorchik@db.ekzorchik.ru_private_key.pem
-rw-r--r-- 1 ekzorchik ekzorchik    0 Feb 28 14:02 known_hosts
ekzorchik@srv-bionic:~$
ekzorchik@srv-bionic:~$ ssh -i ~/.ssh/ekzorchik@db.ekzorchik.ru_private_key.pem ekzorchik@db.ekzorchik.ru -p 33456 "uname -a"
Enter passphrase for key '/home/ekzorchik/.ssh/ekzorchik@db.ekzorchik.ru_private_key.pem':
Linux ekzorchik.ru 5.4.0-139-generic #156-Ubuntu SMP Fri Jan 20 17:27:18 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
ekzorchik@srv-bionic:~$

И так заработало, т.е. конвертирование ppk в pem файл успешно отработало и получается, что можно в качестве клиентской операционной системы использовать любую редакцию и версию Ubuntu. С другими ОС не работает, потому будет работать или нет не представляю.

Итого, я поставил себе задачу разобрал ее как заметка, на этом у меня все, с уважением автор блога Олло Александр aka ekzorchik.