Статьи

Що таке ssh / sftp і для чого він потрібен?

Описують що таке ssh / sftp, для чого він потрібен, як налаштувати клієнт ssh для Linux, OSX, Unix, згенерувати ключі і приготувати його до використання.

Для управлінням сервером на базі Linux на віртуальній машині VMware в зв'язку з відсутністю фізичного терміналу є дві можливості - віконце віртуального терміналу клієнта VMware vSphere або з використанням безпечного з'єднання SSH.

При установці нашого шаблону віртуальної машини і конфігурації сервера на його основі, ми використовували (або будемо використовувати) віконце терміналу клієнта VMware vSphere, оскільки на цьому етапі альтернативи немає. Звичайно, і в подальшому, через нього працювати можна, але дуже незручно - віконце маленьке, немає розширених засобів редагування і копипаста, все треба набирати вручну, не можна передати файл в віртуальну машину і т.д. Одним словом, суцільна туга.

За допомогою клієнта ssh можна управляти сервером на основі нашого шаблону віртуальної машини (і не тільки), при цьому віконце терміналу може бути будь-якого розміру, в якому є всі засоби розширеного редагування, включаючи копіпаст з будь-яких інших додатків, що працюють на комп'ютері, на якому запущено клієнт. Наприклад, можна копіювати команди з цієї статті безпосередньо в віконце терміналу сервера. Програма sftp дозволяє забезпечити безпечний обмін файлами з віртуальною машиною, на якій запущений наш сервер.

З wikipedia: SSH - це мережевий протокол прикладного рівня, що дозволяє виробляти віддалене управління операційною системою і тунелювання TCP-з'єднань (наприклад, для передачі файлів). SSH походить від англійського терміна Secure Shell і переводитися як «безпечна оболонка».

Даний протокол подібний за функціональністю з протоколами Telnet і rlogin, але, на відміну від них, шифрує весь трафік, включаючи передані паролі. SSH допускає вибір різних алгоритмів шифрування, дозволяє безпечно передавати в незахищеній середовищі практично будь-який інший мережевий протокол.

Для роботи по SSH потрібен SSH-сервер і SSH-клієнт. Сервер прослуховує з'єднання від клієнтських машин і при встановленні зв'язку виробляє аутентифікацію, після чого починає обслуговування клієнта. Клієнт використовується для входу на віддалену машину і виконання команд. SSH-клієнти і SSH-сервери є для більшості мережевих операційних систем.

Або іншими словами, за допомогою протоколу ssh можемо організувати управління сервером з будь-якого віддаленого комп'ютера, передавати команди і дані, включаючи паролі та іншу конфіденційну інформацію.

Як це зробити?

На Linux і MAC OS клієнт ssh входить в базову поставку операційної системи. На Windows необхідно встановити клієнт, як стороннє додаток. Як це зробити і як користуватися таким додатком описано в публікаціях " Клієнт SSH для Windows Bitvise Tunnelier "," SSH клієнт для Windows PuTTY "І" PSFTP - SFTP клієнт PuTTY для Windows ".

Тому, почнемо з запуску програми Термінал. Якщо подальше виглядає незрозуміло, бажано прочитати статті " Кілька слів про Linux "І" Команди Linux. Короткий опис ", Так само можна просто повторити без помилок зазначені команди і отримати неообходімий результат. Команди йдуть за знаком «$» і написані курсивом.

Набираємо наступні команди (Можна копіпастом), при цьому ім'я (логін) поточного користувача в прикладах admin:

$ Cd ~ перехід в домашню папку користувача (набираємо cd ~).

$ Ls -la .ssh перевірка, чи є дочірня папка .ssh

Можливі два варіанти відповіді.

перший:

ls: .ssh: No such file or directory немає такої папки - необхідно створити,

набираємо:

$ Mkdir -p .ssh створення дочірньої папки .ssh

$ Chmod 0700 .ssh папка тепер доступна тільки для поточного користувача (обов'язково! Без цього клієнт SSH відмовиться працювати)

$ Ls -la .ssh перевіряємо, що вийшло

Повинно бути все, як на рис. 1.

1

Рис. 1. Створення папки ключів ssh

Тепер необхідно згенерувати ключі для клієнта ssh. Нам потрібен хороший пароль для ключа, який повинен містити не менше 8 знаків, включаючи маленькі і великі латинські літери, цифри і деякі знаки пунктуації, як -, +, #. Коли мені потрібен пароль, я зазвичай відкриваю випадковий англомовний новинний сайт, вибираю деякий абзац з цифрами і виписую перші літери кількох слів перед і після цифр і розбавляю знаками пунктуації.

Як тільки пароль готовий, набираємо:

$ Ssh-keygen -t rsa -C "[email protected]"

В лапках Вашу адресу електронної пошти. Програма запитує де ми хочемо розмістити ключі, (ім'я користувача admin):

Enter file in which to save the key (/home/admin/.ssh/id_rsa):

Шлях правильний. Просто натискаємо Enter. Далі запит на введення пароля.

Enter passphrase (empty for no passphrase):

Вводимо тільки що придуманий хороший пароль для ключа. Зауважте, що ви при введенні паролів не відображаються. Далі, програма просить повторити введення пароля ще раз.

Enter same passphrase again:

Вводимо і отримуємо ключі. В папці .ssh повинні з'явитися закритий ключ id_rsa і відкритий ключ id_rsa.pub. Переконаємося, що це так:

$ Ls -la .ssh

Повинно бути як на рис. 2.

2

Рис. 2. Генерація ключів ssh

Другий, папка .ssh вже існує і ключі згенеровані, то отримаємо висновок як в нижній частині рис. 2.

Тепер останній крок - копіюємо відкритий ключ в домашню папку користувача, щоб передати його на сервер:

$ Cp .ssh / id_rsa.pub authorized_keys2

Файл authorized_keys2 необхідно перенести на USB-флешку. Він буде потрібно при установці сервера з нашого шаблону віртуальної машини. Програма-установник розмістить файл в потрібне місце і дасть потрібні дозволи.

За замовчуванням, сервер SSH встановлений і запускається на будь-якому серверному дистрибутиві Linux. При цьому, сервер налаштований так (по крайней мере, Red Hat / Cent OS), що для організації ssh з'єднання з боку клієнта досить правильно вказати ім'я користувача і пароль. Така конфігурація робить сервер потенційно схильним до атакам brute force (напевно, грубої сили чи підбору пароля). Якщо подивитися логи сервера, то можна помітити, що хтось постійно намагається підібрати пароль для входу на сервер через ssh. Як мінімум, логін одного користувача root (суперкористувач) все знають. Хоча багато спроб і з іншими іменами користувача.

Тому, система на базі нашої віртуальної машини спроектована так, реєстрація через ssh дозволена тільки для користувачів, що не володіють правами користувача root і відкритий ключ яких розміщений на сервері в файлі authorized_keys2. При необхідності виконувати команди від імені суперкористувача root, необхідно використовувати команди sudo або su (див. " Команди Linux. Короткий опис ").

Як це зробити?

Новости