<Попередній | зміст | Наступна>
SSH
Для вирішення цієї проблеми був розроблений новий протокол під назвою SSH (Secure Shell). SSH вирішує дві основні проблеми безпечного зв'язку з віддаленим хостом. По-перше, він підтверджує, що віддалений хост є тим, ким він є (таким чином запобігає так званим атакам «людина посередині»), а по-друге, він шифрує всі комунікації між локальним і віддаленим хостами.
SSH складається з двох частин. Сервер SSH працює на віддаленому хості, прослуховуючи вхідні з’єднання на порту 22, тоді як клієнт SSH використовується в локальній системі для зв’язку з віддаленим сервером.
Більшість дистрибутивів Linux поставляють реалізацію SSH під назвою OpenSSH з проекту OpenBSD. Деякі дистрибутиви за замовчуванням включають як клієнтські, так і серверні пакети (наприклад, Red Hat), а інші (наприклад, Ubuntu) надають лише клієнта. До
дозволити системі отримувати віддалені з’єднання, вона повинна мати OpenSSH-сервер пакет встановлений, налаштований і запущений, і (якщо система працює або знаходиться за брандмауером) він повинен дозволяти вхідні мережеві з’єднання через порт TCP 22.
Чайові: Якщо у вас немає віддаленої системи для підключення, але ви хочете спробувати ці приклади, переконайтеся, що OpenSSH-сервер пакет встановлений у вашій системі та використовуйте локальний як ім'я віддаленого хоста. Таким чином, ваша машина створить мережеві з’єднання з собою.
Клієнтська програма SSH, яка використовується для підключення до віддалених серверів SSH, називається досить відповідним чином: SSH. Щоб підключитися до віддаленого хоста з ім дистанційна система, ми б використали SSH клієнтська програма виглядає так:
[me@linuxbox ~]$ ssh дистанційна система
Неможливо встановити автентичність хоста "remote-sys (192.168.1.4)".
RSA key fingerprint is 41:ed:7a:df:23:19:bf:3c:a5:17:bc:61:b3:7f:d9:bb.
Ви впевнені, що хочете продовжувати з’єднання (так / ні)?
[me@linuxbox ~]$ ssh дистанційна система
Неможливо встановити автентичність хоста "remote-sys (192.168.1.4)".
RSA key fingerprint is 41:ed:7a:df:23:19:bf:3c:a5:17:bc:61:b3:7f:d9:bb.
Ви впевнені, що хочете продовжувати з’єднання (так / ні)?
Під час першої спроби з’єднання з’являється повідомлення, що не вдається встановити автентичність віддаленого хоста. Це тому, що клієнтська програма ніколи раніше не бачила цей віддалений хост. Щоб прийняти облікові дані віддаленого хоста, введіть «так», коли буде запропоновано. Після встановлення з’єднання користувачу буде запропоновано ввести його пароль:
Попередження: назавжди додано 'remote-sys,192.168.1.4' (RSA) до списку відомих хостів.
пароль me@remote-sys:
Попередження: назавжди додано 'remote-sys,192.168.1.4' (RSA) до списку відомих хостів.
пароль me@remote-sys:
Після успішного введення пароля ми отримуємо підказку оболонки від віддаленої системи:
Останній вхід: сб, 30 серпня 13:00:48 2016 [me@remote-sys ~]$
Останній вхід: сб, 30 серпня 13:00:48 2016 [me@remote-sys ~]$
Сеанс віддаленої оболонки триває доти, доки користувач не введе файл вихід команду в підказці віддаленої оболонки, тим самим закриваючи віддалене з’єднання. У цей момент локальний сеанс оболонки
відновиться, і знову з’явиться підказка локальної оболонки.
Також можна підключатися до віддалених систем, використовуючи інше ім’я користувача. Наприклад, якщо локальний користувач «me» мав обліковий запис «bob» у віддаленій системі, user me міг увійти в обліковий запис боб на віддаленій системі наступним чином:
[me@linuxbox ~]$ ssh bob@remote-sys
пароль bob@remote-sys:
Останній вхід: сб, 30 серпня 13:03:21 2016 [bob@remote-sys ~]$
[me@linuxbox ~]$ ssh bob@remote-sys
пароль bob@remote-sys:
Останній вхід: сб, 30 серпня 13:03:21 2016 [bob@remote-sys ~]$
Як зазначалося раніше, SSH перевіряє справжність віддаленого хоста. Якщо віддалений хост не пройшов успішну автентифікацію, з’явиться таке повідомлення:
[me@linuxbox ~]$ ssh дистанційна система
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
@ ПОПЕРЕДЖЕННЯ: ІДЕНТИФІКАЦІЯ ВІДДАЛЕНОГО ХОСТА ЗМІНИЛАСЯ! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@ ЦЕ МОЖЛИВО, ЩО ХТОСЬ РОБИТЬ ЩОСЬ ЛИШЕ!
Хтось може підслуховувати вас прямо зараз (атака «людина посередині»)!
Також можливо, що ключ хосту RSA щойно був змінений. Відбиток ключа RSA, надісланий віддаленим хостом, має значення 41:ed:7a:df:23:19:bf:3c:a5:17:bc:61:b3:7f:d9:bb.
Зверніться до свого системного адміністратора.
Додайте правильний ключ хоста в /home/me/.ssh/known_hosts, щоб позбутися цього повідомлення.
Порушний ключ у /home/me/.ssh/known_hosts:1
Ключ хосту RSA для remote-sys змінився, і ви попросили сувору перевірку.
Не вдалося перевірити ключ хосту.
[me@linuxbox ~]$ ssh дистанційна система
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
@ ПОПЕРЕДЖЕННЯ: ІДЕНТИФІКАЦІЯ ВІДДАЛЕНОГО ХОСТА ЗМІНИЛАСЯ! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@ ЦЕ МОЖЛИВО, ЩО ХТОСЬ РОБИТЬ ЩОСЬ ЛИШЕ!
Хтось може підслуховувати вас прямо зараз (атака «людина посередині»)!
Також можливо, що ключ хосту RSA щойно був змінений. Відбиток ключа RSA, надісланий віддаленим хостом, має значення 41:ed:7a:df:23:19:bf:3c:a5:17:bc:61:b3:7f:d9:bb.
Зверніться до свого системного адміністратора.
Додайте правильний ключ хоста в /home/me/.ssh/known_hosts, щоб позбутися цього повідомлення.
Порушний ключ у /home/me/.ssh/known_hosts:1
Ключ хосту RSA для remote-sys змінився, і ви попросили сувору перевірку.
Не вдалося перевірити ключ хосту.
Це повідомлення викликано однією з двох можливих ситуацій. По-перше, зловмисник може намагатися атакувати «людина посередині». Це рідко, адже це всім відомо SSH попереджає про це користувача. Більш імовірним винуватцем є те, що віддалена система була якимось чином змінена; наприклад, його операційну систему або сервер SSH було перевстановлено. Однак, в інтересах безпеки й безпеки, першу можливість не слід відкидати випадково. Завжди звертайтеся до адміністратора віддаленої системи, коли з’являється це повідомлення.
Після того, як буде визначено, що повідомлення викликано доброякісною причиною, можна безпечно виправити проблему на стороні клієнта. Це робиться за допомогою текстового редактора (натиск можливо), щоб видалити застарілий ключ із ~/.ssh/відомі_хости файл. У прикладі повідомлення вище ми бачимо це:
Порушний ключ у /home/me/.ssh/known_hosts:1
Порушний ключ у /home/me/.ssh/known_hosts:1
Це означає, що один із рядків відомі_господарі файл містить ключ-порушник. Видаліть цей рядок з файлу, а потім SSH програма зможе приймати нові облікові дані аутентифікації від віддаленої системи.
Окрім відкриття сеансу оболонки на віддаленій системі, SSH також дозволяє нам виконати одну команду на віддаленій системі. Наприклад, для виконання безкоштовно команда на віддаленому хості з ім дистанційна система і відобразити результати в локальній системі:
[me@linuxbox ~]$ ssh remote-sys безкоштовно
пароль me@twin4:
всього використано безкоштовно
загальні
буфери
кешований
[me@linuxbox ~]$ ssh remote-sys безкоштовно
пароль me@twin4:
всього використано безкоштовно
Пам'ять:
775536 507184 268352
0
110068
154596
Пам'ять:
-/+ буфери/кеш:
Обмін:
242520 533016
0 1572856
-/+ буфери/кеш:
Обмін:
[me@linuxbox ~]$
[me@linuxbox ~]$
1572856
1572856
Цю техніку можна використовувати більш цікавими способами, наприклад, у цьому прикладі, коли ми виконуємо ls на віддаленій системі та перенаправляємо вихід у файл у локальній системі:
[me@linuxbox ~]$ ssh remote-sys 'ls *' > dirlist.txt
Пароль me@twin4: [me@linuxbox ~]$
[me@linuxbox ~]$ ssh remote-sys 'ls *' > dirlist.txt
Пароль me@twin4: [me@linuxbox ~]$
Зверніть увагу на використання одинарних лапок у команді вище. Це зроблено тому, що ми не хочемо, щоб розширення імені шляху виконувалося на локальній машині; скоріше, ми хочемо, щоб це виконувалося на віддаленій системі. Так само, якби ми хотіли, щоб вихідні дані перенаправлялися у файл на віддаленому комп’ютері, ми могли б помістити оператор переспрямування та ім’я файлу в одинарні лапки:
[me@linuxbox ~]$ ssh remote-sys 'ls * > dirlist.txt'
[me@linuxbox ~]$ ssh remote-sys 'ls * > dirlist.txt'
Тунелювання за допомогою SSH
Частина того, що відбувається, коли ви встановлюєте з’єднання з віддаленим хостом через SSH, полягає в тому, що an зашифрований тунель створюється між локальною та віддаленою системами. Зазвичай цей тунель використовується для безпечної передачі команд, введених у локальній системі, у віддалену систему, а також для безпечної передачі результатів назад. На додаток до цієї основної функції, протокол SSH дозволяє пересилати більшість типів мережевого трафіку через зашифрований тунель, створюючи свого роду VPN (Віртуальна приватна мережа) між локальною та віддаленою системами.
Можливо, найпоширенішим використанням цієї функції є можливість передачі трафіку системи X Window. У системі, на якій запущено X-сервер (тобто на машині з графічним інтерфейсом користувача), можна запустити і запустити клієнтську програму X (графічний додаток) на віддаленій системі, а її дисплей з’явиться в локальній системі. Це легко зробити; ось приклад: Скажімо, ми сидимо в системі Linux під назвою lin-uxbox на якому працює X-сервер, і ми хочемо запустити xload програма на віддаленій системі з ім дистанційна система і подивіться графічний вихід програми в нашій локальній системі. Ми могли б зробити це:
[me@linuxbox ~]$ ssh -X віддалена система
пароль me@remote-sys:
Останній вхід: пн, 08 вересня, 13:23:11 2016 [me@remote-sys ~]$ xload
Після xload команда виконується на віддаленій системі, її вікно з'являється на локальній системі. У деяких системах для цього може знадобитися використовувати опцію «-Y», а не «-X».