110.3 Урок 1
Сертифікат: |
LPIC-1 |
---|---|
Версія: |
5.0 |
Розділ: |
110 Безпека |
Тема: |
110.3 Захист даних за допомогою шифрування |
Урок: |
1 з 2 |
Вступ
Захист даних за допомогою шифрування має першочергове значення в багатьох аспектах сучасного системного адміністрування, особливо коли йдеться про віддалений доступ до систем. На відміну від небезпечних рішень, таких як telnet, rlogin або FTP, протокол SSH (Secure Shell) розроблено з урахуванням безпеки. Використовуючи криптографію з відкритим ключем, він автентифікує хости та користувачів і шифрує весь подальший обмін інформацією. Крім того, SSH можна використовувати для встановлення портових тунелів, які, серед іншого, дозволяють незашифрованому протоколу передавати дані через зашифроване SSH-з’єднання. Поточна рекомендована версія протоколу SSH – 2.0. OpenSSH — це безкоштовна реалізація SSH-протоколу з відкритим кодом.
Цей урок охопить основну конфігурацію клієнта OpenSSH, а також роль ключів хоста OpenSSH сервера. Також буде обговорено концепцію тунелів SSH-портів. Ми будемо використовувати дві машини з такими налаштуваннями:
Роль машини | ОС | IP-адреса | Ім’я хоста | Користувач |
---|---|---|---|---|
Клієнт |
Debian GNU/Linux 10 (buster) |
|
|
|
Сервер |
openSUSE Leap 15.1 |
|
|
|
Базова конфігурація та використання клієнта OpenSSH
Хоча сервер OpenSSH і клієнт постачаються в окремих пакунках, зазвичай можна встановити метапакунок, який буде містити обидва одночасно. Щоб встановити віддалений сеанс із сервером SSH, ви використовуєте команду ssh
, вказуючи користувача, якого ви хочете підключити на віддаленій машині, і IP-адресу віддаленої машини або ім’я хоста. Під час першого підключення до віддаленого хосту ви отримаєте таке повідомлення:
carol@debian:~$ ssh ina@192.168.1.77 The authenticity of host '192.168.1.77 (192.168.1.77)' can't be established. ECDSA key fingerprint is SHA256:5JF7anupYipByCQm2BPvDHRVFJJixeslmppi2NwATYI. Are you sure you want to continue connecting (yes/no)?
Після введення yes
і натискання Enter вам буде запропоновано ввести пароль віддаленого користувача. У разі успішного введення ви побачите попередження, а потім увійдете на віддалений хост:
Warning: Permanently added '192.168.1.77' (ECDSA) to the list of known hosts. Password: Last login: Sat Jun 20 10:52:45 2020 from 192.168.1.4 Have a lot of fun... ina@halof:~>
Повідомлення досить зрозумілі: оскільки ви вперше встановили з’єднання з віддаленим сервером 192.168.1.77
, його автентичність не можна було перевірити в жодній базі даних. Таким чином, віддалений сервер надав ECDSA key fingerprint
свого відкритого ключа (за допомогою хеш-функції SHA256
). Після того, як ви прийняли з’єднання, відкритий ключ віддаленого сервера було додано до бази даних відомих хостів, таким чином дозволяючи автентифікацію сервера для майбутніх з’єднань. Цей список відкритих ключів відомих хостів зберігається у файлі known_hosts
, який знаходиться в ~/.ssh
:
ina@halof:~> exit logout Connection to 192.168.1.77 closed. carol@debian:~$ ls .ssh/ known_hosts
.ssh
і known_hosts
були створені після встановлення першого віддаленого підключення. ~/.ssh
є каталогом за замовчуванням для конфігурації користувача та інформації автентифікації.
Note
|
Ви також можете використовувати |
Якщо ви використовуєте одного користувача як на локальному, так і на віддаленому хостах, немає необхідності вказувати ім’я користувача під час встановлення з’єднання SSH. Наприклад, якщо ви ввійшли як користувач carol
на debian
і хочете підключитися до halof
також як користувач carol
, вам слід просто ввести ssh 192.168.1.77
або ssh halof
(якщо ім’я можна розпізнати):
carol@debian:~$ ssh halof Password: Last login: Wed Jul 1 23:45:02 2020 from 192.168.1.55 Have a lot of fun... carol@halof:~>
Тепер припустимо, що ви встановлюєте нове віддалене з’єднання з хостом, який має ту саму IP-адресу, що й halof
(звичайна річ, якщо ви використовуєте DHCP у своїй локальній мережі). Ви отримаєте попередження про можливість атаки людина посередині:
carol@debian:~$ ssh john@192.168.1.77 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the ECDSA key sent by the remote host is SHA256:KH4q3vP6C7e0SEjyG8Wlz9fVlf+jmWJ5139RBxBh3TY. Please contact your system administrator. Add correct host key in /home/carol/.ssh/known_hosts to get rid of this message. Offending ECDSA key in /home/carol/.ssh/known_hosts:1 remove with: ssh-keygen -f "/home/carol/.ssh/known_hosts" -R "192.168.1.77" ECDSA host key for 192.168.1.77 has changed and you have requested strict checking. Host key verification failed.
Оскільки ви не маєте справу з атакою людина посередині, ви можете безпечно додати відбиток відкритого ключа (public key fingerprint) нового хоста до .ssh/known_hosts
. Як зазначено в повідомленні, ви можете спочатку використати команду ssh-keygen -f "/home/carol/.ssh/known_hosts" -R "192.168.1.77"
, щоб видалити небезпечний ключ (альтернативно, ви можете скористатися ssh-keygen -R 192.168.1.77
, щоб видалити всі ключі, що належать до 192.168.1.77
) з ~/.ssh/known_hosts
). Після цього ви зможете встановити з’єднання з новим хостом.
Вхід на основі ключів
Ви можете налаштувати свій SSH-клієнт так, щоб він не надавав жодних паролів під час входу, а замість цього використовував відкриті ключі. Це найкращий метод підключення до віддаленого сервера через SSH, оскільки він набагато безпечніший. Перше, що вам потрібно зробити, це створити пару ключів на клієнтській машині. Для цього ви скористаєтеся ssh-keygen
з опцією -t
, яка вказує потрібний тип шифрування (алгоритм цифрового підпису еліптичної кривої у нашому випадку). Потім вас попросять вказати шлях для збереження пари ключів (~/.ssh/
це зручно, а також є розташуванням за замовчуванням) і парольну фразу. Хоча парольна фраза необов’язкова, настійно рекомендується завжди її використовувати.
carol@debian:~/.ssh$ ssh-keygen -t ecdsa Generating public/private ecdsa key pair. Enter file in which to save the key (/home/carol/.ssh/id_ecdsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/carol/.ssh/id_ecdsa. Your public key has been saved in /home/carol/.ssh/id_ecdsa.pub. The key fingerprint is: SHA256:tlamD0SaTquPZYdNepwj8XN4xvqmHCbe8g5FKKUfMo8 carol@debian The key's randomart image is: +---[ECDSA 256]---+ | . | | o . | | = o o | | B * | | E B S o | | o & O | | @ ^ = | | *.@ @. | | o.o+B+o | +----[SHA256]-----+
Note
|
Під час створення пари ключів ви можете передати |
Попередня команда створила ще два файли у вашому каталозі ~/.ssh
:
carol@debian:~/.ssh$ ls id_ecdsa id_ecdsa.pub known_hosts
id_ecdsa
-
Це ваш закритий ключ.
id_ecdsa.pub
-
Це ваш відкритий ключ.
Note
|
В асиметричній криптографії (так званій криптографії з відкритим ключем) відкритий і закритий ключі математично пов’язані один з одним таким чином, що все, що зашифровано одним, може бути розшифровано лише другим з цієї пари. |
Наступне, що вам потрібно зробити, це додати свій відкритий ключ до файлу ~/.ssh/authorized_keys
користувача, під яким ви бажаєте увійти на віддаленому хості (якщо каталог ~/.ssh
ще не існує, вам доведеться спочатку його створити). Ви можете скопіювати свій відкритий ключ на віддалений сервер декількома способами: за допомогою флеш-пам’яті USB, за допомогою команди scp
, яка передасть файл за допомогою SSH, або шляхом вилучення вмісту вашого відкритого ключа та передачі його в ssh
таким чином:
carol@debian:~/.ssh$ cat id_ecdsa.pub |ssh ina@192.168.1.77 'cat >> .ssh/authorized_keys' Password:
Коли ваш відкритий ключ буде додано до файлу authorized_keys
на віддаленому хості, ви можете зіткнутися з двома сценаріями під час спроби встановити нове з’єднання:
-
Якщо ви не вказали парольну фразу під час створення пари ключів, ви ввійдете в систему автоматично. Хоча цей метод зручний, він може бути небезпечним залежно від ситуації:
carol@debian:~$ ssh ina@192.168.1.77 Last login: Thu Jun 25 20:31:03 2020 from 192.168.1.55 Have a lot of fun... ina@halof:~>
-
Якщо ви вказали парольну фразу під час створення пари ключів, вам доведеться вводити її під час кожного з’єднання так само, якби це був пароль. Окрім відкритого ключа, цей метод додає додатковий рівень безпеки у вигляді парольної фрази, і тому його можна вважати більш безпечним. Що стосується зручності – однак – це точно так само, як необхідність вводити пароль кожного разу, коли ви встановлюєте з’єднання. Якщо ви не використовуєте парольну фразу і комусь вдасться отримати ваш приватний файл ключа SSH, вони матимуть доступ до кожного сервера, на якому встановлено ваш відкритий ключ.
carol@debian:~/.ssh$ ssh ina@192.168.1.77 Enter passphrase for key '/home/carol/.ssh/id_ecdsa': Last login: Thu Jun 25 20:39:30 2020 from 192.168.1.55 Have a lot of fun... ina@halof:~>
Однак існує спосіб, який поєднує безпеку та зручність: використання агента автентифікації SSH (ssh-agent
). Агент автентифікації має створити власну оболонку та зберігатиме ваші приватні ключі — для автентифікації відкритих ключів — у пам’яті до кінця сеансу. Давайте розглянемо, як це працює, трохи докладніше:
-
Використайте
ssh-agent
, щоб запустити нову оболонку Bash:carol@debian:~/.ssh$ ssh-agent /bin/bash carol@debian:~/.ssh$
-
Використайте команду
ssh-add
, щоб додати свій закритий ключ до безпечної області пам’яті. Якщо ви вказали парольну фразу під час генерації пари ключів (що рекомендовано для додаткової безпеки), ви отримаєте запит ввести парольну фразу:carol@debian:~/.ssh$ ssh-add Enter passphrase for /home/carol/.ssh/id_ecdsa: Identity added: /home/carol/.ssh/id_ecdsa (carol@debian)
Після того, як вашу особу було додано, ви можете увійти на будь-який віддалений сервер, на якому присутній ваш відкритий ключ, без повторного введення парольної фрази. На сучасних комп’ютерах зазвичай виконується ця команда під час завантаження комп’ютера, оскільки вона залишатиметься в пам’яті, доки комп’ютер не вимкнеться (або ключ не буде вивантажено вручну).
Давайте завершимо цей розділ переліком чотирьох типів алгоритмів відкритого ключа, які можна вказати за допомогою ssh-keygen
:
RSA
-
Названий на честь своїх творців Рона Ріввеста, Аді Шаміра та Леонарда Адлемана, він був опублікований у 1977 році. Він вважається безпечним і широко використовується досі. Його мінімальний розмір ключа становить 1024 біти (за замовчуванням 2048).
DSA
-
Алгоритм цифрового підпису виявився небезпечним, і вважається застарілим із OpenSSH 7.0. Ключі DSA повинні мати довжину точно 1024 біти.
ecdsa
-
Алгоритм цифрового підпису еліптичної кривої є вдосконаленням DSA і тому вважається більш безпечним. Він використовує еліптичну криптографію. Довжина ключа ECDSA визначається одним із трьох можливих розмірів еліптичної кривої в бітах: 256, 384 або 521.
ed25519
-
Це реалізація
EdDSA
(алгоритму цифрового підпису кривої Едвардса) який використовує сильнішу криву 25519. Він вважається найбезпечнішим з усіх. Усі ключі Ed25519 мають фіксовану довжину 256 біт.
Note
|
Якщо викликати без специфікації |
Роль ключів хоста сервера OpenSSH
Глобальний каталог конфігурації для OpenSSH знаходиться в каталозі /etc
:
halof:~ # tree /etc/ssh /etc/ssh ├── moduli ├── ssh_config ├── ssh_host_dsa_key ├── ssh_host_dsa_key.pub ├── ssh_host_ecdsa_key ├── ssh_host_ecdsa_key.pub ├── ssh_host_ed25519_key ├── ssh_host_ed25519_key.pub ├── ssh_host_rsa_key ├── ssh_host_rsa_key.pub └── sshd_config 0 directories, 11 files
Окрім moduli
та файлів конфігурації для клієнта (ssh_config
) і сервера (sshd_config
), ви знайдете чотири пари ключів — пару ключів для кожного підтримуваного алгоритму — які створюються під час встановлення сервера OpenSSH. Як уже зазначалося, сервер використовує ці ключі хоста, щоб ідентифікувати себе клієнтам за потреби. Схема їх назв така:
- Закриті ключі
-
ssh_host_
prefix + algorithm +key
suffix (наприклад,ssh_host_rsa_key
) - Відкриті ключі (або відбитки відкритих ключів)
-
ssh_host_
prefix + algorithm +key.pub
suffix (наприклад,ssh_host_rsa_key.pub
)
Note
|
Відбиток (fingerprint) створюється шляхом застосування криптографічної хеш-функції до відкритого ключа. Оскільки відбитки коротші за ключі, до яких вони відносяться, вони стають в нагоді для спрощення певних завдань керування ключами. |
Дозволи для файлів, що містять приватні ключі - цє 0600
або -rw-------
: тільки для читання та запису власником (root
). З іншого боку, усі файли відкритих ключів також доступні для читання членам групи власників і всім іншим (0644
або -rw-r—r--
):
halof:~ # ls -l /etc/ssh/ssh_host_* -rw------- 1 root root 1381 Dec 21 20:35 /etc/ssh/ssh_host_dsa_key -rw-r--r-- 1 root root 605 Dec 21 20:35 /etc/ssh/ssh_host_dsa_key.pub -rw------- 1 root root 505 Dec 21 20:35 /etc/ssh/ssh_host_ecdsa_key -rw-r--r-- 1 root root 177 Dec 21 20:35 /etc/ssh/ssh_host_ecdsa_key.pub -rw------- 1 root root 411 Dec 21 20:35 /etc/ssh/ssh_host_ed25519_key -rw-r--r-- 1 root root 97 Dec 21 20:35 /etc/ssh/ssh_host_ed25519_key.pub -rw------- 1 root root 1823 Dec 21 20:35 /etc/ssh/ssh_host_rsa_key -rw-r--r-- 1 root root 397 Dec 21 20:35 /etc/ssh/ssh_host_rsa_key.pub
Ви можете переглянути відбитки ключів, передавши ssh-keygen
перемикач -l
. Ви також повинні використати -f
, щоб вказати шлях до ключового файлу:
halof:~ # ssh-keygen -l -f /etc/ssh/ssh_host_ed25519_key 256 SHA256:8cnPrinC49ZHc+/9Ai5pV+1JfZ4WBRZhd3rDOsc2zlA root@halof (ED25519) halof:~ # ssh-keygen -l -f /etc/ssh/ssh_host_ed25519_key.pub 256 SHA256:8cnPrinC49ZHc+/9Ai5pV+1JfZ4WBRZhd3rDOsc2zlA root@halof (ED25519)
Щоб переглянути відбиток ключа, а також його випадкове зображення, просто додайте перемикач -v
наступним чином:
halof:~ # ssh-keygen -lv -f /etc/ssh/ssh_host_ed25519_key.pub 256 SHA256:8cnPrinC49ZHc+/9Ai5pV+1JfZ4WBRZhd3rDOsc2zlA root@halof (ED25519) +--[ED25519 256]--+ | +oo| | .+o.| | . ..E.| | + . +.o| | S + + *o| | ooo Oo=| | . . . =o+.==| | = o =oo o=o| | o.o +o+..o.+| +----[SHA256]-----+
Тунелі SSH-портів
OpenSSH має дуже потужну функцію пересилання, за допомогою якої трафік на вихідному порту тунелюється і шифрується через процес SSH, який потім перенаправляє його на порт на хості призначення. Цей механізм відомий як тунелювання портів або переадресація портів і має такі важливі переваги:
-
Дозволяє обходити брандмауери для доступу до портів на віддалених хостах.
-
Дозволяє отримати доступ ззовні до хоста у вашій приватній мережі.
-
Він забезпечує шифрування для всього обміну даними.
Грубо кажучи, ми можемо розрізняти локальне та віддалене тунелювання портів.
Тунель локального порту
Ви визначаєте порт локально для перенаправлення трафіку на хост призначення через процес SSH, який знаходиться між ними. Процес SSH може виконуватися на локальному хості або на віддаленому сервері. Наприклад, якщо з якоїсь причини ви хочете тунелювати з’єднання з www.gnu.org
через SSH за допомогою порту 8585
на вашій локальній машині, ви повинні зробити щось подібне до цього:
carol@debian:~$ ssh -L 8585:www.gnu.org:80 debian carol@debian's password: Linux debian 4.19.0-9-amd64 #1 SMP Debian 4.19.118-2 (2020-04-29) x86_64 The programs included with the Debian GNU/Linux system are free software; (...) Last login: Sun Jun 28 13:47:27 2020 from 127.0.0.1
Пояснення таке: за допомогою перемикача -L
ми вказуємо локальний порт 8585
для підключення до http порту 80
на www.gnu.org
за допомогою процесу SSH, який працює на debian
— нашому localhost. Ми могли б написати ssh -L 8585:www.gnu.org:80 localhost
з таким же ефектом. Якщо ви зараз використовуєте веб-браузер для переходу на http://localhost:8585
, вас буде перенаправлено на www.gnu.org
. Для демонстрації ми будемо використовувати lynx
(класичний текстовий веб-браузер):
carol@debian:~$ lynx http://localhost:8585 (...) * Back to Savannah Homepage * Not Logged in * Login * New User * This Page * Language * Clean Reload * Printer Version * Search * _ (...)
Якби ви хотіли зробити те саме, але підключилися через процес SSH, що працює на halof
, ви б діяли так:
carol@debian:~$ ssh -L 8585:www.gnu.org:80 -Nf ina@192.168.1.77 Enter passphrase for key '/home/carol/.ssh/id_ecdsa': carol@debian:~$ carol@debian:~$ lynx http://localhost:8585 (...) * Back to Savannah Homepage * Not Logged in * Login * New User * This Page * Language * Clean Reload * Printer Version * Search * _ (...)
Важливо звернути увагу на три деталі команди:
-
Завдяки опції
-N
ми не входили вhalof
, а замість цього виконали переадресацію портів. -
Опція
-f
вказала SSH працювати у фоновому режимі. -
Ми вказали користувача
ina
для переадресації:ina@192.168.1.77
Тунель віддаленого порту
Під час тунелювання віддаленого порту (або зворотного перенаправлення портів) трафік, що надходить на порт на віддаленому сервері, перенаправляється до процесу SSH, який працює на вашому локальному хості, а звідти на вказаний порт на сервері призначення (який також може бути вашою локальною машиною). Наприклад, скажімо, ви хочете дозволити комусь із-за меж вашої мережі отримати доступ до веб-сервера Apache, який працює на вашому локальному хості, через порт 8585
SSH-сервера, який працює на halof
(192.168.1.77
). Ви б застосували таку команду:
carol@debian:~$ ssh -R 8585:localhost:80 -Nf ina@192.168.1.77 Enter passphrase for key '/home/carol/.ssh/id_ecdsa': carol@debian:~$
Тепер кожен, хто встановить з’єднання з halof
на порту 8585
, побачить домашню сторінку Debian
's Apache2 за замовчуванням:
carol@debian:~$ lynx 192.168.1.77:8585 (...) Apache2 Debian Default Page: It works (p1 of 3) Debian Logo Apache2 Debian Default Page It works! This is the default welcome page used to test the correct operation of the Apache2 server after installation on Debian systems. If you can read this page, it means that the Apache HTTP server installed at this site is working properly. You should replace this file (located at /var/www/html/index.html) before continuing to operate your HTTP server. (...)
Note
|
Існує третій, більш складний тип переадресації портів, який виходить за рамки цього уроку: динамічна переадресація портів. Замість взаємодії з одним портом цей тип переадресації використовує різні зв’язки TCP через діапазон портів. |
Тунелі X11
Тепер, коли ви розумієте тунелі портів, давайте завершимо цей урок обговоренням тунелювання X11 (також відомого як X11forwarding). Через тунель X11 X Window System на віддаленому хості пересилається на вашу локальну машину. Для цього вам просто потрібно передати ssh
параметр -X
:
carol@debian:~$ ssh -X ina@halof ...
Тепер ви можете запустити графічну програму, таку як веб-браузер firefox
, з таким результатом: програма буде запущена на віддаленому сервері, але її відображення буде переадресовано на ваш локальний хост.
Якщо замість цього розпочати новий сеанс SSH із опцією -x
, X11forwarding буде вимкнено. Спробуйте запустити firefox
зараз, і ви отримаєте помилку на зразок такої:
carol@debian:~$ ssh -x ina@halof carol@192.168.0.106's password: (...) ina@halof:~$ firefox (firefox-esr:1779): Gtk-WARNING **: 18:45:45.603: Locale not supported by C library. Using the fallback 'C' locale. Error: no DISPLAY environment variable specified
Note
|
Три директиви конфігурації, пов’язані з переадресацією локального порту, переадресацією віддаленого порту та переадресацією X11, це |
Вправи до посібника
-
Увійшовши як користувач
sonya
на вашій клієнтській машині, виконайте такі завдання SSH на віддаленому серверіhalof
:-
Виконайте команду для отримання списку вмісту
~/.ssh
від імені користувачаserena
на віддаленому хості; потім поверніться до свого локального терміналу. -
Увійдіть як користувач
serena
на віддаленому хості. -
Увійдіть як користувач
sonya
на віддаленому хості. -
Видаліть усі ключі, що належать
halof
, із локального файлу~/.ssh/known_hosts
. -
На клієнтській машині створіть пару ключів
ecdsa
з 256 біт. -
На вашому клієнтському комп’ютері створіть пару ключів
ed25519
з 256 біт.
-
-
Виконайте наступні кроки в правильному порядку, щоб встановити SSH-з’єднання за допомогою агента автентифікації SSH:
-
На клієнті запустіть нову оболонку Bash для агента автентифікації за допомогою
ssh-agent /bin/bash
. -
На клієнті створіть пару ключів за допомогою
ssh-keygen
. -
На клієнті додайте свій закритий ключ до безпечної області пам’яті за допомогою
ssh-add
. -
Додайте відкритий ключ вашого клієнта до файлу
~/.ssh/authorized_keys
користувача, як якого ви хочете увійти на віддаленому хості. -
Якщо він ще не існує, створіть
~/.ssh
для користувача, під яким ви бажаєте увійти на сервер. -
Підключіться до віддаленого сервера.
Правильний порядок:
Крок 1:
Крок 2:
Крок 3:
Крок 4:
Крок 5:
Крок 6:
-
-
Що стосується переадресації портів, які параметри та директиви використовуються для таких типів тунелів:
Тип тунелю Варіант Директива Локальний
Віддалений або зворотний
X
-
Припустимо, ви вводите команду
ssh -L 8888:localhost:80 -Nf ina@halof
у терміналі вашого клієнтського комп’ютера. Перебуваючи на клієнтській машині, ви вказуєте браузер наhttp://localhost:8888
. Що ви отримаєте?
Дослідницькі вправи
-
Щодо директив безпеки SSH:
-
Яка директива використовується в
/etc/ssh/sshd_config
для ввімкненняroot
входу: -
Яку директиву ви б використали в
/etc/ssh/sshd_config
, щоб вказати лише локальний обліковий запис для SSH-підключення:
-
-
Якщо ви використовуєте одного користувача як на клієнті, так і на сервері, яку команду
ssh
ви можете використати, щоб передати відкритий ключ клієнта на сервер, щоб ви могли ввійти через автентифікацію відкритого ключа? -
Створіть два тунелі локальних портів однією командою, перенаправляючи локальні непривілейовані порти 8080 і 8585 через віддалений сервер
halof
на веб-сайтиwww.gnu.org
іwww.melpa.org
відповідно. Використовуйте користувачаina
на віддаленому сервері та не забудьте використовувати перемикачі-Nf
:
Підсумки
У цьому уроці ми обговорили OpenSSH 2, який використовує протокол Secure Shell для шифрування зв’язку між сервером і клієнтом. Ви дізналися:
-
Як увійти на віддалений сервер.
-
Як виконувати команди віддалено.
-
Як створювати пари ключів.
-
Як встановити вхід на основі ключів.
-
Як використовувати агент автентифікації для додаткової безпеки та зручності.
-
Алгоритми відкритого ключа, які підтримуються OpenSSH:
RSA
,DSA
,ecdsa
,ed25519
. -
Роль ключів хоста OpenSSH.
-
Як створити тунелі портів: локальні, віддалені та X.
У цьому уроці обговорювалися такі команди:
ssh
-
Вхід або виконання команд на віддаленій машині.
ssh-keygen
-
Створення, керування та перетворення ключів автентифікації.
ssh-agent
-
Агент автентифікації OpenSSH.
ssh-add
-
Додавання ідентифікаторів приватного ключа до агента автентифікації.
Відповіді до вправ посібника
-
Увійшовши як користувач
sonya
на вашій клієнтській машині, виконайте такі завдання SSH на віддаленому серверіhalof
:-
Виконайте команду для отримання списку вмісту
~/.ssh
від імені користувачаserena
на віддаленому хості; потім поверніться до свого локального терміналу.ssh serena@halof ls .ssh
-
Увійдіть як користувач
serena
на віддаленому хості.ssh serena@halof
-
Увійдіть як користувач
sonya
на віддаленому хості.ssh halof
-
Видаліть усі ключі, що належать
halof
, із локального файлу~/.ssh/known_hosts
.ssh-keygen -R halof
-
На клієнтській машині створіть пару ключів
ecdsa
з 256 біт.ssh-keygen -t ecdsa -b 256
-
На вашому клієнтському комп’ютері створіть пару ключів
ed25519
з 256 біт.ssh-keygen -t ed25519
-
-
Виконайте наступні кроки в правильному порядку, щоб встановити SSH-з’єднання за допомогою агента автентифікації SSH:
-
На клієнті запустіть нову оболонку Bash для агента автентифікації за допомогою
ssh-agent /bin/bash
. -
На клієнті створіть пару ключів за допомогою
ssh-keygen
. -
На клієнті додайте свій закритий ключ до безпечної області пам’яті за допомогою
ssh-add
. -
Додайте відкритий ключ вашого клієнта до файлу
~/.ssh/authorized_keys
користувача, як якого ви хочете увійти на віддаленому хості. -
Якщо він ще не існує, створіть
~/.ssh
для користувача, під яким ви бажаєте увійти на сервер. -
Підключіться до віддаленого сервера.
Правильний порядок:
Крок 1:
На клієнті створіть пару ключів за допомогою
ssh-keygen
.Крок 2:
Якщо він ще не існує, створіть
~/.ssh
для користувача, від імені якого ви бажаєте увійти на сервер.Крок 3:
Додайте відкритий ключ вашого клієнта до файлу
~/.ssh/authorized_keys
користувача, під яким ви хочете увійти на віддаленому хості.Крок 4:
На клієнті запустіть нову оболонку Bash для агента автентифікації за допомогою
ssh-agent /bin/bash
.Крок 5:
На клієнті додайте свій закритий ключ до безпечної області пам’яті за допомогою
ssh-add
.Крок 6:
Підключіться до віддаленого сервера.
-
-
Що стосується переадресації портів, які параметри та директиви використовуються для таких типів тунелів:
Тип тунелю Варіант Директива Локальний
-L
AllowTcpForwarding
Віддалений або зворотний
-R
GatewayPorts
X
-X
X11Forwarding
-
Припустимо, ви вводите команду
ssh -L 8888:localhost:80 -Nf ina@halof
у терміналі вашого клієнтського комп’ютера. Перебуваючи на клієнтській машині, ви вказуєте браузер наhttp://localhost:8888
. Що ви отримаєте?Домашню сторінка веб-сервера
halof
, надану сервером як ресурсlocalhost
.
Відповіді до дослідницьких вправ
-
Щодо директив безпеки SSH:
-
Яка директива використовується в
/etc/ssh/sshd_config
для ввімкненняroot
входу:PermitRootLogin
-
Яку директиву ви б використали в
/etc/ssh/sshd_config
, щоб вказати лише локальний обліковий запис для SSH-підключення:AllowUsers
-
-
Якщо ви використовуєте одного користувача як на клієнті, так і на сервері, яку команду
ssh
ви можете використати, щоб передати відкритий ключ клієнта на сервер, щоб ви могли ввійти через автентифікацію відкритого ключа?ssh-copy-id
-
Створіть два тунелі локальних портів однією командою, перенаправляючи локальні непривілейовані порти 8080 і 8585 через віддалений сервер
halof
на веб-сайтиwww.gnu.org
іwww.melpa.org
відповідно. Використовуйте користувачаina
на віддаленому сервері та не забудьте використовувати перемикачі-Nf
:ssh -L 8080:www.gnu.org:80 -L 8585:www.melpa.org:80 -Nf ina@halof