Встановлення та налаштування сервера SSH у Linux. Як користуватися протоколом SSH в Ubuntu: встановлення та налаштування Не підключається через ssh ubuntu

Ця стаття присвячена налаштуванням віддаленого доступудо Ubuntu Server. Принцип підключення дуже простий: на стороні клієнта ми використовуємо програму для віддаленого доступу (наприклад, Putty), на стороні сервера встановлюємо та налаштовуємо пакет OpenSSH. При підключенні клієнт проходить процедуру авторизації у сервера та між ними встановлюється зашифроване з'єднання. Більш докладно принцип роботи протоколу SSH розглядався у статті.

Схема мережі наведена нижче. Віддалене підключення до сервера буде здійснюватись з комп'ютера client.

Ми встановили Ubuntu Server на чистий жорсткий диск. Після встановлення необхідно налаштувати мережний інтерфейс сервера для виходу до мережі. А, саме, задати IP-адресу, маску мережі, шлюз за замовчуванням. Якщо у вас інтерфейс вже налаштований, можна пропустити цей крок. Налаштування мережевих інтерфейсівзадаються у файлі /etc/network/interfaces. Для редагування скористаємося текстовим редактором nano.

Потрапляємо в режим редагування файлу interfaces. Нас тут цікавить усе, що нижче. # The primary network interface. У Наразісервер отримує IP-адресу DHCP, що не зовсім правильно. Сервер повинен мати статичний IP, щоб усі вузли в мережі точно знали його адресу. Пропишемо мережеві налаштуваннявручну.

Мій сервер знаходиться у локальній підмережі 192.168.1.0/24. Сервер призначений IP 192.168.1.2, маска 255.255.255.0, шлюз за замовчуванням 192.168.1.1, адреса DNS-сервера 192.168.0.1

Для збереження файлу натискаємо клавіші Ctrl + X -> Y -> Enter. Щоб застосувати установки, необхідно перезапустити процес network. Також можна просто перезавантажити сервер командою sudo reboot.

Перевіряємо (команда ifconfig -a) – налаштування застосовувалися

Все готове до OpesnSS, який можна встановити з терміналу командами

$ sudo apt-get install openssh-client

$ sudo apt-get install openssh-server

Керувати запуском, зупинкою та перезапуском SSH-сервера можна за допомогою команд

$ sudo service ssh stop | start | restart

По суті, доступ по SSH на сервер вже є. Але для більш тонкого налаштуванняІснує конфігураційний файл за адресою /etc/ssh/sshd_config. Доступ до конфіг здійснюється тільки з-під рута.

На стороні клієнта завантажуємо будь-яку програму для підключення SSH, я рекомендую Putty . У програмі залишиться лише ввести IP-адресу сервера та підключитися до нього. При підключенні вводимо ім'я та пароль користувача.


Підписуйтесь на нашу


Для встановлення ssh-сервера виконайте в терміналі:

Ubuntu/Debian/Linux Mint

Потім відредагуйте налаштування ssh-сервера у файлі /etc/ssh/sshd_config
Для цього у терміналі виконайте:


Також для того, щоб OpenSSH слухав тільки певні ip адреси, допустимо 192.168.0.50, 192.168.0.51 на порту 777, то просто додайте такі рядки:

Обмежити доступ через SSH для користувачів: test2 test3

OpenSSH сервер може використовувати протокол Rlogin для авторизації і може імітувати поведінку застарілої команди rsh, тому відключіть читання файлів користувача~/.rhosts та ~/.shosts:

Увімкніть попереджувальний банер, відредагувавши наступний рядок і створіть відповідн. файлу:

Зберігайте логи, переконайтеся, що директива LogLevel має значення INFO або DEBUG

Щоб перезапустити OpenSSH на CentOS, Fedora або RHEL:

У деяких випадках, запустити сервер можна лише в такий спосіб:


Для перевірки статусу сервера використовуємо наступну команду


Тепер на комп'ютер із встановленим OpenSSH-server можна зайти так:

Ssh [-p port]

Наприклад:

CentOS / RHEL / Fedora Linux - відключити або видалити OpenSSH можна так:

$chkconfig sshd off
$ yum erase openssh-server

Основні файли та папки SSH:
~/.ssh/ - користувальницькі конфігураційні директорії
~/.ssh/authorized_keys та ~/.ssh/authorized_keys2 - списки публічних ключів (RSA або DSA), які можуть бути використані для авторизації в обліковий запис користувача
~/.ssh/known_hosts - ключі серверів
/etc/ssh/sshd_config - конфігураційний файл сервера OpenSSH
/etc/ssh/ssh_config – конфігураційний файл клієнта OpenSSH
/etc/nologin - якщо цей файл існує, то система відмовлятиметься пускати будь-кого крім root-користувача. Краще видалити та не використовувати.
/etc/hosts.allow та /etc/hosts.deny - списки контролю доступу (ACL)

У цій статті ми покажемо вам, як встановити, настроїти та використовувати OpenSSH на Ubuntu 16.04. SSH (Secure Shell) є протоколом, який дозволяє отримати надійний доступ до віддаленої машини в той час як OpenSSH є набором інструментів на основі протоколу SSH. Сьогодні ми покажемо вам, як встановити і налаштувати OpenSSH за допомогою Ubuntu 16.04 в якості операційної системи.

Установка OpenSSH на Ubuntu 16.04

По-перше, давайте встановимо OpenSSH. Оновіть індекси пакетів за допомогою наступної команди:

Sudo apt-get update

Для встановлення програми сервера OpenSSH, а також інших пов'язаних пакетів використовують таку команду:

Sudo apt-get install openssh-server

Зверніть увагу, що пакет сервера OpenSSH може бути вже встановлений у вашій системі як частина процесу початкової установки сервера. Крім того, ви можете встановити клієнтську програму OpenSSH за допомогою наступної команди:

Sudo apt-get install openssh-client

Налаштування OpenSSH на Ubuntu 16.04

Перед внесенням будь-яких змін у конфігурації OpenSSH, добре знати, як керувати послугою OpenSSH на вашому . Для запуску служби можна використовувати наступну команду:

Sudo systemctl start sshd.service

Щоб зупинити службу, можна використовувати:

Sudo systemctl stop sshd.service

Щоб перезапустити службу, можна використовувати:

Sudo systemctl restart sshd.service

Щоб перевірити стан служби, ви можете використовувати:

Sudo systemctl status sshd.service

Щоб увімкнути службу під час завантаження системи, ви можете використовувати:

Sudo systemctl enable sshd.service

Щоб вимкнути службу під час завантаження системи, ви можете використовувати:

Sudo systemctl disable sshd.service

Після внесення будь-яких змін у конфігурації OpenSSH необхідно перезапустити службу, щоб зміни набули чинності.

Основним конфігураційним файлом для програми сервера OpenSSH є /etc/ssh/sshd_config . Переконайтеся, що ви створили резервну копію вихідної конфігурації перед внесенням будь-яких змін:

Sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.orig

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

Змініть її на щось інше. Наприклад 2022

Port 2022

Збережіть файл та закрийте його. Потім перезапустіть службу, щоб зміни набули чинності.

Тепер можна спробувати , використовуючи номер порту, вказаний у файлі конфігурації сервера OpenSSH. Якщо ви можете підключитися до сервера через SSH успішно, ви можете продовжити з наступним кроком, який є забезпечення OpenSSH.

Безпечний OpenSSH на Ubuntu 16.04

#PermitRootLogin yes

і змініть його на:

PermitRootLogin no

Збережіть зміни та перезапустіть службу, щоб зміни набули чинності. Наступного разу при підключенні до сервера ви можете використовувати новоствореного користувача SUDO.

Щоб захистити сервер, ви можете вимкнути перевірку пароля та . Крім того, ви можете .

Додаткові опції конфігурації можна перевірити за допомогою сторінки man:

Man sshd_config

або ви можете відвідати сторінки OpenSSH вручну на https://www.openssh.com/manual.html.

Ця секція Ubuntu Server Guide встановлює потужну коллекцию інструментів для remote control, і transfer data між, мережевими комп'ютерами називається OpenSSH . You will also learn about some of the configuration settings possible with the OpenSSH server application and how to change them on your Ubuntu system.

OpenSSH is a freely available version of the Secure Shell (SSH) protocol family of інструменти для remotely controlling, або transferring files між, комп'ютерами. Традиційні інструменти використовуються для виконання цих функцій, таких як telnet або rcp , є пояснення і переміщення користувача" password in cleartext when used. the legacy tools.

OpenSSH server component, sshd , Listens continuely for client connections з будь-якого клієнта інструментів. При підключенні доповідей запитання, sshd sets up the correct connection depending on the type of client tool connecting. Для прикладу, якщо remote computer is connecting with ssh client application, the OpenSSH server sets up a remote control session after authentication. Якщо remote user connects to OpenSSH server with scp , the OpenSSH server daemon initiates a secure copy of files між сервером і клієнтом після authentication. OpenSSH може використовувати багато методів authentication, включаючи площину password, public key, і Kerberos tickets.

Installation

Installation of the OpenSSH client and server applications is simple. Для налаштування OpenSSH клієнтів applications on your Ubuntu system, use this command at a terminal prompt:

sudo apt install openssh-client

Для встановлення OpenSSH application server, і пов'язаний support files, use this command at a terminal prompt:

sudo apt install openssh-server

Оппонент-адресний пакет може також бути вибраний для встановлення протягом серверного налаштування процесів.

Configuration

Ви можете налаштувати додаткові параметри OpenSSH application server, sshd , editing the file /etc/ssh/sshd_config . Для отримання інформації про налаштування напрямків, використовуваних в цьому файлі, ви можете побачити відповідну manual page with following command, issued at terminal prompt:

man sshd_config

Існують багато напрямків в sshd configuration file controlling such things as communication settings, and authentication modes. Наведені нижче приклади налаштування напрямків, які можуть бути змінені за допомогою /etc/ssh/sshd_config file.

Prior to editing configuration file, ви повинні мати знімок оригіналу файлу і захищати його від написання, якщо ви маєте оригінал налаштування як посилання і для використання як необхідно.

Копію файлу /etc/ssh/sshd_config і захищайте його від написання з наступними кнопками, передбачено на terminal prompt:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original sudo chmod a-w /etc/ssh/sshd_config.original

Наведені нижче приклади налаштування напрямків можуть бути змінені:

    Для налаштування вашої OpenSSH надрукований на TCP port 2222 включений до поточного TCP port 22, зміна Port directive as such:

    Це має sshd allow public key-based login credentials, simply add or modify the line:

    PubkeyAuthentication yes

    Якщо line є незрівнянним сучасним, він не буде оголошений.

    Для того, щоб ваш OpenSSH server розмістити вміст /etc/issue.net файл як pre-login banner, simply add or modify the line:

    Banner /etc/issue.net

    У файлі /etc/ssh/sshd_config.

Після змінення змін до файлу /etc/ssh/sshd_config, виберіть файл, і restart the sshd server application to effect the changes using the following command at terminal prompt:

sudo systemctl restart sshd.service

Багато інших налаштувань directives для sshd є доступними для зміни application servers's behavior to fit your needs. /ssh/sshd_config file, який може бути вимкнений з вашого сервера під час відновлення його. .

Ми розібралися, що таке SSHі в чому її переваги, також ми реалізували найпростіший приклад SSH-сервера та клієнта.

Сьогодні я розповім про більш детальне налаштування SSH-сервера.

Як говорить відома фраза, «у Linuxвсе є файл», тому для налаштування SSH-сервера потрібно і досить відредагувати один файл конфігурації. Його повний шлях/etc/ssh/sshd_config. Для редагування відкриємо цей файл із правами суперкористувача будь-яким текстовим редактором.

Перед редагуванням зробимо про всяк випадок backupфайлу:

Sudo cp /etc/ssh/sshd_config(,.bak)

Тепер подивимося його вміст:

Sudo nano /etc/ssh/sshd_config

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

Як бачимо, тут досить багато параметрів, розбиратимемося поступово з кожним із них.

Port

Тут прописується, який порт слухатиме наш сервер. За умовчанням він слухає 22 порт TCP/IP. Цікавий фактщо можна вказати кілька портів. Наприклад:

ListenAddress

Загальний вигляд налаштування можна записати так:

ListenAddress host | IPv4_addr | IPv6_addr ListenAddress :port

Вказує мережеву адресу, на якій слухатиме сервер.
Якщо на сервері є кілька мережних інтерфейсів, які настроєні на використання різних IP-адрес, то ви можете обмежити доступ за цим параметром.
Наприклад, на сервері наступні 4 мережевий інтерфейс:

Eth0 - 192.168.0.1 eth1 - 192.168.0.2 eth2 - 192.168.0.3 eth3 - 192.168.0.4

За замовчуванням ssh-сервер знаходиться в стані очікування підключення на всіх IP-адреси. Якщо бажаєте, щоб користувачі могли авторизуватися лише на інтерфейсах 2 і 3 , то слід зробити так:

ListenAddress 192.168.0.2 ListenAddress 192.168.0.3

Тут також можна вказати порт. Наприклад:

ListenAddress 192.168.0.2:222

Якщо порт не встановлено, sshбуде слухати на цій адресі та
на порту, вказаному в опції Port.Якщо ви будете використовувати ListenAddressне вказуючи порт, то опція Portмає передувати опції ListenAddress.Якщо взагалі не вказувати ListenAddress,За промовчанням сервер слухає на всіх локальних адресах.

Address Family

Вказує, яке сімейство IPадрес має бути використане сервісом ssh. Можливі варіанти:
any- будь-які
"inet"(тільки IPv4)
"inet6"(тільки IPv6)
За замовчуванням - Ані.

Має сенс по можливості обмежити сімейство оброблюваних адрес реально використовуваними, тобто якщо ви використовуєте тільки IPv4- відключіть IPv6, і навпаки.

Наприклад, для дозволу IPv4та заборони IPv6:

AddressFamily inet

Protocol

sshможе працювати з протоколами SSH1і SSH2.При цьому використання небезпечного SSH1украй не рекомендується. Змусити sshпрацювати тільки з протоколом SSH2можна так:

Protocol 2

PermitRootLogin

За замовчуванням зайти на віддалений сервер під користувачем rootніхто не забороняє. Але це не зовсім безпечно. На місце цього більш правильно авторизуватиметься під користувальницькою обліковим записомта підвищувати свої привілеї за допомогою команди 'su -',або використовувати 'Sudo'.

Якщо у вашій організації кілька системних адміністраторів і всі вони підключаються до сервера під суперкористувачем, то не завжди можна дізнатися, хто з адміністраторів знаходиться на сервері. Тому після відключення можливості авторизації безпосередньо під користувачем root, системні адміністраториспочатку заходитимуть під своїм обліковим записом і лише після цього отримуватимуть привілеї суперкористувача; це полегшить аудит сервера та дій, які виробляють сисадміни.
Для вимкнення вищеописаної функції слід вимкнути параметр PermitRootLogin, встановивши значення "не".

PermitRootLogin no

PermitEmptyPasswords

Блокуємо порожні паролі

PermitEmptyPasswords no

AllowUsers, AllowGroups

За промовчанням авторизуватися може будь-який користувач сервера. Краще обмежити коло користувачів, яким дозволено доступ до ssh.
Це може бути корисно, коли ви створюєте кілька користувачів системі, але дозволити доступ по sshхочете лише деяким.

Для цього у конфігураційний файл sshd_configслід додати певних користувачів на сервері. У прикладі нижче це користувачі john, peterі michael,яким дозволено вхід на сервер. Ім'я користувачів розділені пробілами.

AllowUsers john peter michael

При додаванні всіх користувачів, які присутні в будь-якій опроїделеній групі, слід вказати так, як це представлено на прикладі нижче. Групи користувачів, яким дозволено вхід на сервер, розділені також пробілом.

AllowGroups developers administrators

DenyUsers, DenyGroups

На противагу параметру, який дозволяє доступ певним користувачам або групам, ви також можете вказати користувачів або групи, яким заборонено вхід на сервер.
Для цього слід додати до конфігураційного файлу sshd_configпараметр DenyUsers, в якому через пропуск вказати тих користувачів, яким заборонено доступ на сервер. На прикладі нижче це системний apache,а так само цілком реальний boris.

DenyUsers apache boris

Існує також параметр, за допомогою якого можна заборонити доступ не окремим користувачам, а цілим групам, до яких належать користувачі. Це параметр DenyGroupsі групи вказуються також через пропуск.

DenyGroups marketing hackers

Зверніть увагу на те, що можна використовувати комбінації забороняючих та вирішуючих параметрів: DenyUsers, AllowUsers, DenyGroups, і AllowGroups.

LoginGraceTime

При спробі авторизуватися за sshна сервер у вас є 2 хвилини, щоб ввести логін та пароль. Якщо ви цього не зробите, з'єднання з сервером буде розірвано. 2 хвилини очікування авторизаційних даних досить багато. Слід обмежити до 1 хвилини або навіть до 30 секунд.

Для цього слід змінити параметр LoginGraceTimeшляхом редагування файлу sshd_config,і вказати там потрібний час. У прикладі нижче це 1 хвилина.

LoginGraceTime 1m

ClientAliveInterval

Роз'єднання за відсутності активності в шеллі

Після того, як ви успішно авторизувалися на сервер, ви можете захотіти зробити так, щоб можна було розривати з'єднання автоматично після того, як минув деякий час, протягом якого ви не робили жодних дій у консолі. Це зазвичай називається часом бездіяльності.

Використовуючи Bash,ви можете досягти цього, змінивши змінну оточення TMOUT.

У OpenSSHа це досягається шляхом комбінації параметрів ClientAliveCountMaxі ClientAliveIntervalу конфігураційному файлі sshd_config.

  • ClientAliveCountMax- Вказує максимальну кількість checkaliveповідомлень, що надсилаються ssh-сервером, при яких він не отримує будь-якої відповіді від ssh-клієнта. За умовчанням це 3.
  • ClientAliveInterval- Вказує час очікування (таймаут) у секундах. Після вказаного часу ssh-сервер відішле checkaliveповідомлення клієнту, чекаючи від нього відповіді (response). За замовчуванням це 0, тобто сервер не надсилатиме повідомлення для перевірки.

Для того, щоб ваш ssh-клієнт автоматично вимикався після 10 хвилин ( 600 секунд), слід внести зміни до конфігураційного файлу sshd_configнаступним чином:

ClientAliveInterval 600 ClientAliveCountMax 0

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

Всім удачі та до швидких зустрічей на нашому блозі!




Top