Архив автора: admin

Узнать версию ос Linux и версию ядра из консоли



























3.7/5 — (3 голоса)

Существует несколько различных команд, которые могут помочь вам определить, какой дистрибутив и версия Linux работает в системе.

Команда lsb_release

Команда lsb_release выводит информацию о дистрибутиве.

Префикс lsb в названии команды относится к проекту Linux Standard Base, который был создан с целью создания ряда стандартов для выпуска дистрибутивов Linux, чтобы уменьшить различия между отдельными дистрибутивами. Предполагается, что использование LSB снижает затраты, связанные с переносом приложений на разные дистрибутивы, а также снижает усилия, связанные с поддержкой этих приложений.

Чтобы отобразить информацию о дистрибутиве выполните команду:

lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 18.10 Release: 18.10 Codename: cosmic

Выводится название дистрибутива, номер версии и кодовое имя.

lsb-release a команда Linux

Можно использовать опцию -d, чтобы показать только строку Description, которая обычно содержит и название и версию дистрибутива.

lsb_release -d Description: Ubuntu 18.10

Файл /etc/os-release

В файле /etc/os-release содержится информация о дистрибутиве, включая URL-адреса сайт системы и некоторые дополнительные данные. Данный файл присутствует в дистрибутивах, использующих systemd.

Чтобы вывести содержимое файла /etc/os-release можно воспользоваться командой cat:

cat /etc/os-release NAME=”Ubuntu” VERSION=”18.10 (Cosmic Cuttlefish)” ID=ubuntu ID_LIKE=debian PRETTY_NAME=”Ubuntu 18.10″ VERSION_ID=”18.10″ HOME_URL=”https://www.ubuntu.com/” SUPPORT_URL=”https://help.ubuntu.com/” BUG_REPORT_URL=”https://bugs.launchpad.net/ubuntu/” PRIVACY_POLICY_URL=”https://www.ubuntu.com/legal/terms-and-policies/privacy-policy” VERSION_CODENAME=cosmic UBUNTU_CODENAME=cosmic

cat /etc/os-release

Файл /etc/issue

Файл /etc/issue содержит текст идентификации системы, который печатается перед приглашением. Обычно этот файл содержит информацию о версии Linux:

cat /etc/issue

Вывод будет выглядеть примерно так:

Debian GNU/Linux 9 n l

Команда hostnamectl

Команда hostnamectl, выполненная без параметров или с ключом status, выводит текущую информацию о системе.

hostnamectl Static hostname: p Icon name: computer-desktop Chassis: desktop Machine ID: abc231434aabcb…a Boot ID: 51dcaa2321bbbb…a Operating System: Ubuntu 18.10 Kernel: Linux 4.18.0-16-generic Architecture: x86-64

Помимо данных дистрибутива, выводится версия ядра и архитектура.

hostnamectl команда Linux - информация о системе

Файл /etc /*release

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

cat /etc/*releasecat /etc/*version

Команда uname

Команда uname отображает несколько системных сведений, включая архитектуру ядра Linux, имя версии и выпуск.

Чтобы узнать, какая версия ядра Linux работает в вашей системе, введите следующую команду:

uname -srmLinux 4.9.0-8-amd64 x86_64

Вывод выше говорит нам, что ядро ​​Linux является 64-битным и его версия «4.9.0-8-amd64».

Что такое Линукс и почему так много операционных систем на его базе?

GNU/Linux было разработано как многопользовательское и многозадачное ядро для разных операционных систем. Для которого программисты создали множество графических менеджеров и программных оболочек. От дистрибутива (операционной системы) зависит, для чего вы будете использовать компьютер. Каждая ОС на базе Linux отличается своей функциональной частью. Единой частью всех дистрибутивов является «Терминал», это их основная часть. С его помощью вы можете:

  • проводить установку и запуск программ;
  • добавлять хранилища для хранения ПО;
  • проводить настройку конфигурационных файлов и самого дистрибутива.

Сейчас эта система имеет особую популярность среди программистов, также ее очень часто используют для серверов.

Широко распространяться в домашних компьютерах она начала сравнительно недавно, завоевав любовь пользователей за счет широких возможностей настройки: некоторые версии дистрибутивов можно запускать прямо с флеш-накопителя, другие подходят для слабых компьютеров. Дистрибутивы отличаются своим функционалом, размером и внешним видом.

Не все операционные системы на базе Linux можно скачать. Например, Google Chrome OS (да-да, есть и такая операционная система, не только браузер) идет предустановленным на некоторых моделях ноутбуков Samsung, HP и т.п. В открытом доступе официальных дистрибутивов это операционной системы не найти. Зато есть много форков и копий. Мы не будем в этой обзоре давать ссылки на такие сайты. Для каждого дистрибутива в обзоре мы даем ссылку для скачивания на официальный сайт или официальное сообщество.

Почему пользователи отказываются от Windows в пользу Linux?

Чаще всего в качестве достоинств операционных систем на базе Линукс называют:

  1. Отсутствие вирусов . Нельзя сказать, что эту систему вообще невозможно взломать, но хакеры крайне редко проявляют интерес к Linux. Есть несколько рутикулов, которые помогают проникать на сервера, но в домашние ПК они практически не запускаются. О том, что система безопасна говорит и то, что ни у одной антивирусной утилиты нет баз данных специально для Linux. В основном программы настроены на поиск вредоносного кода, который был перенесен с Windows при помощи флешек или дисков.
  2. Практически все дистрибутивы распространяются бесплатно, что позволяет людям с несколькими домашними устройствами не тратить кучу денег на лицензии. При этом вы можете регулярно переустанавливать дистрибутивы, тестировать их и менять. Дополнительное преимущество в том, что программное обеспечение для Linux так же распространяется бесплатно. И приятным бонусом является отсутствие рекламных вставок и сторонних программ, которые загружаются в память ПК вместе с основной утилитой.
  3. Система многообразна и безграничные возможности по настройке внешнего вида. Помимо множества дистрибутивов, вы можете установить на свой ПК разные рабочие окружения. Это поможет вам менять их по необходимости или настроению.
  4. В систему встроен репозиторий. Его идея легла в основу магазина приложений Google Play. Из него вы сможете установить самые разные программы, не прибегая к помощи сайтов и сторонних программ. Единственное неудобство, которое заметно сразу после перехода с Windows, отсутствие привычных названий утилит.
  5. Система удобна по внешнему интерфейсу и разделению программ в меню. Каждая утилита занимает свой раздел в меню, что облегчает ее поиск. Такие небольшие приятные моменты помогают сделать работу намного удобней.
  6. В ядро Linux вшиты практически все необходимые драйвера для периферийного оборудования. Вы можете установить любое устройство, и оно тут же начнет работу. Вам не придется искать драйвера, как для Windows, скачивать их на другом компьютере, чтобы потом оборудование начало работать без сбоев. Неудобств не возникнет даже при подключении новой сетевой карты.
  7. По умолчанию система самостоятельно шифрует диски, что позволяет защитить файлы при попадании компьютера в чужие руки. В Windows подобная опция доступна только при помощи сторонних программ.

Этих положительных сторон достаточно, чтобы вы захотели попробовать операционную систему на ядре Linux. Но перед тем как выбирать дистрибутив, стоит ознакомиться с особенностями каждой оболочки и тщательно изучить недостатки ОС.

Недостатки Linux

Для начала приведем ситуации, с которыми так и не смогли справиться программисты, создававшие дистрибутивы Linux. Такие неприятности возникают редко, но для начинающих пользователей они могут оказаться фатальными.

  1. Плохая совместимость с рядом современных устройств. Большинство принтеров, сканеров, роутеров и прочих устройств созданы для Windows. Поэтому они могут работать не всегда корректно. Пользователи могут самостоятельно изменить дистрибутив, чтобы подключенные устройства работали корректно. Если вы не умеете самостоятельно корректировать настройки ОС в том же терминале, то стоит просто скачать и загрузить современную версию дистрибутива.
  2. Некорректная работа графической подсистемы. После выхода из спящего режима, при использовании дискретных видеокарт, может наблюдаться зависание. Избавиться от этой проблемы можно только путем перезагрузки. Проблемы с видеокартами чаще всего появляются после обновления ядра или компонентов, ответственных за вывод графики.
  3. Несмотря на то что многие драйвера вшиты в ядро, они могут переставать устанавливаться автоматически или удаляться после обновления системы. Эта проблема решается откатом на прежнюю версию дистрибутива или установкой новой оболочки.
  4. Некорректная работа системы охлаждения в ноутбуках. Из-за неправильного управления кулеры начинают шуметь или плохо справляются со своей работой.
  5. Steam for Linux развивается очень медленно, пользователи не могут скачивать и приобретать любую музыку и приложения. Если вы выберите платную программу, то могут возникнуть проблемы при введении данных карты (не весь пластик принимается магазином). Хотя стоит отметить, что магазин приложений Windows развит не лучше, при его использовании могут возникнуть проблемы. Но в последнем случае есть много альтернативных источников для программ.

Чтобы не сталкиваться с этими проблемами, стоит устанавливать только современные версии операционных систем. Для большинства рядовых пользователей такие неприятности могут стать причиной для отказа от Linux ОС.

Хотя стоит отметить, что за последние годы интерфейс оболочек становится все более дружелюбным. Перечисленные выше проблемы разработчики стараются решить, но пока полностью избавиться от них не получается.

Обзор лучших дистрибутивов Linux со ссылками скачать с официальных сайтов

Перед тем как установить Linux, стоит ознакомиться с особенностями его дистрибутивов. У каждого из них есть свои плюсы и минусы.

А еще помните, что для тестирования ОС не обязательно удалять Windows! Просто используйте виртуальную машину. Как это сделать читайте здесь: Лучшие виртуальные машины для Windows 7, 8 и 10.

Как узнать версию Linux

Мы будем использовать команду uname, которая используется для печати вашей системной информации в Linux, такой как версия ядра и имя выпуска, имя сетевого узла, имя аппаратного оборудования, архитектура процессора, аппаратная платформа и операционная система.

$ uname -или

В предыдущей команде параметр -o выводит имя операционной системы и -r выводит версию выпуска ядра.

Вы также можете использовать опцию -a с командой uname для печати всей системной информации, как показано:

$ uname -a


Затем мы будем использовать файловую систему /proc, которая хранит информацию о процессах и другой системной информации, она сопоставлена ​​/proc и монтируется во время загрузки.

$ cat /proc/ version


На приведенном выше изображении вы найдете следующую информацию:

  • Версия Linux (ядро), которую вы запускаете: версия Linux 4.5.5-300.fc24.x86_64
  • Имя пользователя, скомпилировавшего ваше ядро: [email protected]
  • Версия компилятора GCC, используемого для построения ядра: gcc версия 6.1.1 20160510
  • Тип ядра: # 1 SMP (ядро Symmetric MultiProcessing) поддерживает системы с несколькими процессорами или несколькими ядрами ЦП.
  • Дата и время создания ядра: Чт май 19 13:05:32 UTC 2016

Узнать дистрибутив

Прежде всего давайте узнаем имя дистрибутива и его версию если это возможно. Для этого будем смотреть содержимое файлов в папке /etc/, которые заканчиваются на release:

cat /etc/*-release

В Ubuntu утилита выведет содержимое двух файлов /etc/lsb-release и /etc/os-release. В них будет содержаться исчерпывающая информация о имени дистрибутива и версии его релиза:

Но если мы выполним ту же команду в ArchLinux то получим совсем другой результат:

Тут уже нет версии, есть только имя дистрибутива, поскольку ArchLinux использует систему скользящих релизов. Немного меньше, но почти всю ту же информацию можно получить используя команду lsb_release:

lsb_release -a

Также очень часто вы можете узнать имя дистрибутива посмотрев пункт “О программе” для любого системного приложения или лучше утилиты “Настройки”:

И еще один способ увидеть версию дистрибутива в основанных на Debian системах – посмотреть информацию о сборке пакета:

dpkg -l openssl

Или для RPM систем:

rpm -qa | grep openssl

Узнать версию ядра

Во многих случаях нам нужна не столько версия дистрибутива linux, сколько версия ядра, которое в нем используется. Для просмотра этой информации тоже есть несколько команд:

uname -a

Или:

uname -r

У меня используется версия ядра 4.8.0-59, тут же мы видим архитектуру системы – x86_64. Обозначение SMB означает, что ядро поддерживает многоядерные процессоры или несколько процессоров. Но мы можем узнать ту же информацию, посмотрев содержимое файла /proc/version:

cat /proc/version


А еще можно посмотреть строку параметров запуска ядра, она тоже содержит версию:

cat /proc/cmdline

Есть еще несколько файлов с подобной информацией:

cat /proc/sys/kernel/{ostype,osrelease,version}

Как узнать архитектуру компьютера

Вы уже знаете как узнать версию Linux, имя дистрибутива и ядро, архитектура уже проскальзывала в командах выше, но существует отдельная команда, которая выводит только архитектуру:

arch

Для этих же целей можно использовать uname:

uname -m

Узнать имя и версию дистрибутива Linux

Кстати, ранее мы говорили о том, какой видеоредактор является лучшим для Linux.

Лучший способ определить имя дистрибутива Linux и версию версии — использовать команду cat/etc/os-release, которая работает практически во всей системе Linux. Например:

$ cat /etc/lsb-release — для Ubuntu или Linux Mint

$ cat /etc/SuSE-release в поле перед release указывать название системы

Как узнать 32 или 64 бит Linux?

uname -m

Результат выполнения команд:

$ cat /etc/issue
Debian GNU/Linux 7 n l

$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 7.3 (wheezy)
Release: 7.3
Codename: wheezy

$ uname -m
x86_64

В итоге получаем Debian 7.3 64bit wheezy. Теперь вы знаете как посмотреть версию Linux. Как видите, в Linux достаточно много способов для решения этой задачи. Надеюсь, эта информация была здоровой для вас.

Узнаем версию Линукс через терминал

Узнать версию Linux можно множеством способов, от основных признаков до открытия файла и просмотра дистрибутива и версии ОС. Рассмотрены будут только самые востребованные способы.

Для большинства дистрибутивов подойдет команда lsb-release с аргументов -a.

lsb_release -a

lsb_release

Как видно на скриншоте выше, у меня стоит Debian 7.8.

Ко второму способу можно отнести просмотр файла “*-release”.

Команда в терминале:

cat /etc/*-release

release
Если вы используете Ubuntu, то данная команда выведет информацию с 2 файлов: /etc/lsb-release и /etc/os-release.

С помощью них можно полностью узнать данные о дистрибутиве. Однако при выполнении такой же команды в ArchLinux итог будет совсем другим.

К третьему способу можно отнести – просмотр данных о сборке пакетов Debian.

dpkg -l openssl

Если же у вас RPM-система, то путь другой:

rpm -qa | grep openssl


[spoiler title=”Источники”]

  • https://andreyex.ru/operacionnaya-sistema-linux/kak-proverit-versiyu-linux/
  • https://pingvinus.ru/note/linux-version
  • https://SmartBobr.ru/programmy/linux/
  • https://linuxinsider.ru/kak-uznat-versiyu-linux/
  • https://losst.ru/kak-uznat-versiyu-linux
  • https://www.linux16.ru/articles/uznat-versiyu-os-linux.html
  • https://www.vseprolinux.ru/uznat-versiyu-linux


[/spoiler]


2020-07-27T15:39:49
Linux

SSH – настройка доступа к серверу, команды и подключение без паролей



























Rate this post

Протокол Secure Shell (SSH) был разработан для максимальной защиты сетевых взаимодействий с удаленными узлами сети. Этот протокол шифрует сетевой трафик при помощи улучшенных возможностей аутентификации, а также функций, направленной на защиту других незащищенных протоколов – таких как защищенное копирование (Secure Copy, SCP), защищенный протокол передачи файлов (Secure File Transfer Protocol, SFTP), перенаправление X-сеансов и перенаправление портов. Поддерживается несколько типов шифрования (начиная от 512-битного и заканчивая 32768-битным) с использованием различных криптографических алгоритмов – Blowfish, Triple DES, CAST-128, Advanced Encryption Scheme (AES) и ARCFOUR. Чем выше разрядность шифрования, тем больший объем трафика генерируется в сети. Из рисунка 1 видно, как любой пользователь сети может с легкостью просмотреть трафик telnet-подключения с помощью анализатора сетевых пакетов (например, Wireshark).

Архитектура SSH

В документах IETF RFC 4251-4256 дается следующее определение: “Протокол SSH используется для организации безопасного входа в удаленную систему и организации иных безопасных служб через сети, не обеспечивающие безопасности”. Протокол включает три основных компонента (рисунок 3):

  • Протокол транспортного уровня: обеспечивает аутентификацию серверов, конфиденциальность и целостность. Этот протокол может также обеспечивать сжатие информации и работает в основном с использованием соединений TCP/IP, но может быть реализован и на базе иных потоков данных с гарантированной доставкой.
  • Протокол аутентификации пользователей: используется на серверах для проверки подлинности клиентов и работает на основе протокола транспортного уровня.
  • Протокол соединений: обеспечивает мультиплексирование шифрованного туннеля в несколько логических каналов и работает поверх протокола аутентификации пользователей.

Синтаксис

Рассмотрим синтаксис команды.

ssh [опция] [пользователь]@[название хоста] [команда]

Стоит отметить, что утилита способна работать с помощью двух версий протокола, они так и называются протокол 1 и протокол 2. Второй вариант является наилучшим, так как поддерживает значительно больше способов шифрования, а также аутентификаций. Именно поэтому протокол 2 применяется пользователями чаще всего.

Основные опции:

  • «g» – для разрешения удаленной машине пользоваться определенным локальным портом.
  • «l» – для изменения/введения имя пользователя в определенной системе.
  • «f» – аргумент переводит режим работы в фоновый.
  • «n» – для перенаправления классического вывода.
  • «p» – для изменения/введения данных о локальном порту SSH, используемом на удаленной машине.
  • «q» – для исключения вероятности показа сообщений о возникающих ошибках.
  • «v» – для включения специального режима отладки.
  • «x» – для отключения перенаправления X11.
  • «X» – для включения перенаправления Х11.
  • «C» – для включения сжатия.

Представленный выше список является неполным. На самом деле команда поддерживает в разы больше опций, а описанные варианты используются чаще всего. Стоит заметить, что большинство настроек можно водить с использованием файла «ssh/config». Читайте так же: “SSH — настройка доступа к серверу

Примеры типового использования SSH в операционных системах UNIX и Linux

Как правило, SSH используется для того, чтобы пользователи могли подключаться к удаленным компьютерам и выполнять на них различные команды. Однако SSH также поддерживает туннелирование и X11-соединения и даже позволяет передавать файлы с помощью SFTP и SCP. Можно использовать во множестве приложений для различных платформ, включая Linux, UNIX, Windows и Apple® OS X (для запуска некоторых приложений могут потребоваться дополнительные возможности, доступные либо совместимые только с определенными SSH-клиентами или SSH-серверами).

Рассмотрим несколько общих примеров синтаксиса SSH:

  • Доступ к командной оболочке удаленного компьютера (вместо использования незащищенных протоколов telnet и rlogin): # ssh fsmythe@example.com [fsmythe@example.com] ~
  • Выполнение отдельной команды на удаленном компьютере (вместо использования rsh) # ssh root@example.com reboot root@example.com’s password: ******
  • Копирование файлов с локального сервера на удаленный компьютер посредством команды SCP: root@edb-01.example.com’s password: ****** file1.txt 100% 0 0.0KB/s 00:00 file2.txt 100% 0 0.0KB/s 00:00
  • Защищенная передача файлов посредством SFTP (вместо использования FTP): sftp fsmythe@example.com Connecting to example.com… fsmythe@example.com’s password: ******* sftp>
  • Эффективные и безопасные процедуры резервного копирования, синхронизации и зеркалирования файлов на локальный или удаленный компьютер при помощи rsync: # rsync -avul –rsh=ssh /opt/edbdata/ root@example.com:/root/backup/ root@example.com’s password: ****** building file list … done ./ file1.txt file2.txt file3.txt file4.txt dir1/file5.txt dir2/file6.txt sent 982813 bytes received 2116 bytes 1374860.38 bytes/sec total size is 982138 speedup is 1.00
  • Перенаправление или туннелирование порта (не путайте с VPN): ssh -L 8000:mailserver:110 example.com fsmythe@example.com’s password: ********
  • Перенаправление X-сеансов с удаленного компьютера (может осуществляться через несколько промежуточных узлов): Edit /etc/ssh/sshd_config and change 2 keywords : AllowTcpForwarding yes X11Forwarding yes # service sshd restart $ export DISPLAY $ ssh -X fsmythe@example.com
  • Конфигурация с перенаправлением X11, используемая совместно с клиентом X Windows, в котором настроено SSH-туннелирование X11. Это позволяет использовать графическую подсистему UNIX или Linux через защищенное SSH-соединение на локальном компьютере с Windows, подключенном через SSH к удаленному узлу Linux или UNIX: ssh -ND 8000 fsmythe@example.com Browser Settings, goto ‘Manual Proxy Configuration’ set “SOCKS Host” to example.com, the ‘Port to 8000’ , Enable SOCKS v5, and lastly set ‘No Proxy for’ field to ‘localhost, 127.0.0.1’
  • Безопасное монтирование директории удаленного сервера в качестве файловой системы локального компьютера с помощью sshfs: # yum install sshfs fuse-utils (Install sshfs and fuse-utils) $sshfs example.com:/remote_dir /mnt/local_dir
  • Автоматизированное наблюдение и управление удаленными серверами при помощи различных средств: (Report number of apache processes running on the remote server example.com): $ ssh example.com ps -ef | grep httpd | wc -l root@example.com’s password: *****

Полезные советы по настройке и использованию SSH

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

  • Запретите удаленные подключения пользователям с привилегиями root: # vi /etc/ssh/sshd_config PermitRootLogin no
  • Создавайте пары ключей (открытый/закрытый) с использованием стойких идентификационных фраз и защищайте закрытый ключ паролем (никогда не генерируйте пары ключей или идентификационные фразы без использования паролей): (Use a higher bit rate for the encryption for more security) ssh-keygen -t rsa -b 4096
  • Настраивайте обработчики TCP (TCP wrappers) таким образом, чтобы разрешать подключаться только определенным удаленным компьютерам, а всем остальным – запрещать: # vi /etc/hosts.deny ALL: 192.168.200.09 # IP Address of badguy
  • Отключайте функциональность SSH-сервера на рабочих станциях и ноутбуках – для этого отключите службу SSH, а затем удалите пакет SSH-сервера: # chkconfig sshd off # yum erase openssh-server
  • Управляйте разрешениями на SSH-подключение с помощью учетных записей: # vi /etc/ssh/sshd_config AllowUsers fsmythe bnice swilson DenyUsers jhacker joebadguy jripper
  • Используйте только протокол SSH версии 2: # vi /etc/ssh/sshd_config Protocol 2
  • Закрывайте неактивные подключения, указав время простоя: # vi /etc/ssh/sshd_config ClientAliveInterval 600 # (Set to 600 seconds = 10 minutes) ClientAliveCountMax 0
  • Запрещайте аутентификацию на основе хоста: # vi /etc/ssh/sshd_config HostbasedAuthentication no
  • Отключайте пользовательские файлы .rhosts: # vi /etc/ssh/sshd_config IgnoreRhosts yes
  • Настраивайте брандмауэр таким образом, чтобы разрешать входящие SSH-подключения только из доверенных сетей: Update /etc/sysconfig/iptables (Redhat specific file) to accept connection only from 192.168.100.0/24 and 209.64.100.5/27, enter: -A RH-FW-1-INPUT -s 192.168.100.0/24 -m state –state NEW -p tcp –dport 22 -j ACCEPT -A RH-FW-1-INPUT -s 209.64.100.5/27 -m state –state NEW -p tcp –dport 22 -j ACCEPT
  • Явно указывайте сетевые интерфейсы, которые должны принимать входящие SSH-подключения: # vi /etc/ssh/sshd_config ListenAddress 192.168.100.17 ListenAddress 209.64.100.15
  • Настраивайте политики пользователей на использование стойких паролей, обеспечивающих защиту от атак с помощью полного перебора, социальной инженерии и подбора по словарям: # < /dev/urandom tr -dc A-Za-z0-9_ | head -c8 oP0FNAUt[
  • Ограничивайте доступ SFTP-пользователей их домашними директориями с помощью параметра Chroot SSHD: # vi /etc/ssh/sshd_config ChrootDirectory /data01/home/%u X11Forwarding no AllowTcpForwarding no
  • Запрещайте использование пустых паролей: # vi /etc/ssh/sshd_config PermitEmptyPasswords no
  • Ограничивайте количество входящих соединений на порт 2022 в определенный интервал времени: Redhat iptables example (Update /etc/sysconfig/iptables): -A INPUT -i eth0 -p tcp –dport 2022 -m state –state NEW -m limit –limit 3/min –limit-burst 3 -j ACCEPT -A INPUT -i eth0 -p tcp –dport 2022 -m state –state ESTABLISHED -j ACCEPT -A OUTPUT -o eth0 -p tcp –sport 2022 -m state –state ESTABLISHED -j ACCEPT
  • Настраивайте iptables таким образом, чтобы в течение 30 секунд разрешать не более трех попыток подключения к порту 2022: Redhat iptables example (Update /etc/sysconfig/iptables): -I INPUT -p tcp –dport 2022 -i eth0 -m state –state NEW -m recent –set -I INPUT -p tcp –dport 2022 -i eth0 -m state –state NEW -m recent –update –seconds 30 –hitcount 3 -j DR
  • Используйте анализатор log-файлов (например, logcheck, loggrep, splunk или logwatch) для более тщательного анализа и создания отчетов. Настройте также само SSH-приложение на более подробное журналирование событий: Installation of the logwatch package on Redhat Linux # yum install logwatch
  • Устанавливайте наиболее подробный уровень журналирования SSH: # vi /etc/ssh/sshd_config LogLevel DEBUG
  • Всегда обновляйте пакеты SSH и необходимые библиотеки до последних версий: # yum update openssh-server openssh openssh-clients -y
  • Скрывайте версию OpenSSH в исходном коде, после чего компилируйте приложение заново. После этого вносите следующие изменения: # vi /etc/ssh/sshd_config VerifyReverseMapping yes # Turn on reverse name checking UsePrivilegeSeparation yes # Turn on privilege separation StrictModes yes # Prevent the use of insecure home directory # and key file permissions AllowTcpForwarding no # Turn off , if at all possible X11Forwarding no # Turn off , if at all possible PasswordAuthentication no # Specifies whether password authentication is # allowed. The default is yes. Users must have # another authentication method available .
  • Удаляйте исполняемые файлы rlogin и rsh из системы и замещайте их symlink -ссылками на SSH: # find /usr -name rsh /usr/bin/rsh # rm -f /usr/bin/rsh # ln -s /usr/bin/ssh /usr/bin/rsh

SSH поддерживает множество разнообразных методов и способов аутентификации, которые можно включать и отключать. Этим можно управлять в конфигурационном файле /etc/ssh/sshd_config, указывая ключевое слово, относящееся к тому или иному методу аутентификации, с последующим указанием параметра yes или no. В следующем примере показаны наиболее распространенные параметры:

# RSAAuthentication yes # PubkeyAuthentication yes # RhostsRSAAuthentication no # HostbasedAuthentication no # RhostsRSAAuthentication and HostbasedAuthentication PasswordAuthentication yes ChallengeResponseAuthentication no # KerberosAuthentication no GSSAPIAuthentication yes

Ключевые слова AllowedAuthentications и RequiredAuthentications в файле sshd_config определяют, какие конфигурации и методы аутентификации используются только с протоколом SSH версии 2. Синтаксис, разрешающий аутентификацию с помощью паролей и открытых ключей, выглядит следующим образом:

# vi /etc/ssh/sshd_config AllowedAuthentications publickey, password RequiredAuthentications publickey, password

Установка пакетов SSH

Как уже говорилось система ssh в Linux-системах распространяется в виде составного метапакета, поэтому для установки всех требуемых утилит ssh нужно выполнить всего одну команду:

В Ubuntu

$ sudo apt-get install ssh

В CentOS

$ yum -y install openssh-server openssh-clients

После чего начнется процесс установки

Как видно, менеджер пакетов сам распознает все зависимые и связанные пакеты и установит их. Также, по завершению установки, автоматически будет запущен SSH-сервер в режиме демона. Это можно проверить командой:

$ systemctl status sshd

или:

$ service sshd status даст тот же вывод. Теперь сервер работает с базовыми настройками по-умолчанию.

Настройка SSH сервера

Настройки sshd находятся в файле /etc/ssh/sshd_config. Открываем этот файл для редактирования и изменяем его содержимое для наших нужд, не забывая при этом о безопасности.

Первый параметр – Port. По умолчанию используется 22 порт. Изменим его на нестандартный порт 2203 – это избавит наш сервер от сетевых роботов, которые автоматически сканируют интернет в поиске открытых портов и пытаются через них подключиться. Это не избавит от сканирования человеком, но для защиты от человека существует фаервол, хитрые способы открытия порта, «горшочки с мёдом» и т. д.

Port 2203

Теперь, чтобы подключиться к серверу нужно будет явно указать порт. Например, так:

$ ssh –l andrey –p 2203 192.168.123.254

или так

$ ssh andrey@sunup.aitishnik.local –p 2203

Следующие две закомментированные строки оставляем без изменения.

#ListenAddress ::

#ListenAddress 0.0.0.0

Эти строки отвечают за настройку разграничений по сетевым интерфейсам, сетевому адресу или имени компьютера. По умолчанию сервер «слушает» (принимает подключения) на всех сетевых интерфейсах. Нас это устраивает, поэтому мы оставляем значение по умолчанию. Если бы нам нужно было оставить подключение только через внешний интерфейс, то раскомментировав строку мы бы написали:

ListenAddress 192.168.123.0

В этой же строке можно явно указать порт, предварительно закомментировав (поставив символ # в начале строки) первую строку – Port 2203:

ListenAddress 192.168.123.0:2203

Следующий параметр отвечает за версию протокола SSH. Значение по умолчанию 2. Его и оставляем. Не добавляем единичку ни при каких обстоятельствах. Первая версия протокола SSH не безопасна!

Protocol 2

Строки HostKey необходимы для второй версии протокола SSH и отвечают за названия файлов ключей и их расположение. Первая строка отвечает за пару ключей RSA, вторая соответственно за пару ключей DSA. К названиям открытых (публичных) ключей добавляется .pub. Эти ключи используются при аутентификации с ключом хоста. Можно поменять слово host в названии ключей на имя нашего сервера, но мы сделаем это в части, посвященной генерации ключей. Сейчас же отключим ключи DSA, так как будем пользоваться только RSA:

HostKey /etc/ssh/ssh_host_rsa_key

#HostKey /etc/ssh/ssh_sunup_dsa_key

Строка Privilege Separation указывает, должен ли демон ssh (sshd) разделять привилегии. Если да – то сначала будет создан непривилегированный дочерний процесс для входящего сетевого трафика. После успешной авторизации будет создан другой процесс с привилегиями вошедшего пользователя. Основная цель разделения привилегий – предотвращение превышения прав доступа. Оставляем yes.

UsePrivilegeSeparation yes

Следующие строки отвечают за временный ключ и его длину при работе с первой версией протокола SSH. Мы не используем SSH-1, поэтому пока закомментируем эти строки.

# KeyRegenerationInterval 3600

# ServerKeyBits 768

Далее следует группа параметров, отвечающая за журналирование. События, связанные с доступом по SSH записываются в журнал /var/log/auth

Первый параметр определяет, список каких событий администратор хочет видеть в журнале. Доступны следующие значения: DAEMON, USER, AUTH, LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7. Нас интересует авторизация, поэтому оставляем AUTH.

SyslogFacility AUTH

Второй параметр определяет уровень детализации событий. Доступны следующие события: SILENT , QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2, DEBUG3. Оставляем уровень детализации по умолчанию, если возникнут ошибки, то всегда можно увеличить детализацию журнала.

LogLevel INFO

Следующая группа параметров относится к аутентификации. Первый параметр означает, что соединение будет разорвано через указанное количество секунд, если пользователь не войдёт в систему. Уменьшим это время в два раза.

LoginGraceTime 60

Второй параметр разрешает или запрещает вход по SSH под суперпользователем. Запрещаем вход суперпользователю.

PermitRootLogin no

Третий параметр включает проверку демоном ssh прав и владение домашним каталогом пользователя, который пытается получить удалённый доступ к компьютеру. Оставляем yes.

StrictModes yes

Добавляем параметр AllowUsers, которого нет в конфигурационном файле по умолчанию. Этот параметр разрешает доступ к серверу по протоколу SSH только для перечисленных пользователей.

AllowUsers andrey

В нашем примере разрешение есть только у пользователя andrey. Значениями этого параметра могут выступать имена пользователей, отделённые друг от друга пробелами. Нельзя использовать в качестве значений UID (User ID). Можно использовать запись пользователя в виде user@host, например andrey@echidna. Это означает, что доступ разрешён пользователю andrey с компьютера echidna. Причём пользователь и компьютер проверяются отдельно, это позволяет разграничить доступ определенных пользователей с определенных компьютеров. Существует обратный параметр – DenyUsers, который запрещает доступ пользователям, перечисленным в значении этого параметра. Кроме параметров связанных с доступом отдельных пользователей существуют соответствующие параметры для групп: AllowGroups и DenyGroups.

Оставляем включенной аутентификацию RSA, в параметре RSAAuthentication:

RSAAuthentication yes

Оставляем включенной аутентификацию по открытому ключу, в дальнейшем мы настроим аутентификацию таким способом.

PubkeyAuthentication yes

Параметр AuthorizedKeysFile определяет файл, в котором содержатся публичные ключи, используемые для аутентификации пользователей по открытому ключу. В записи могут присутствовать переменные, например %h означает домашний каталог пользователя, а %u – имя пользователя. В дальнейшем мы планируем использование аутентификации по открытому ключу – раскомментируем эту строку.

AuthorizedKeysFile .ssh/authorized_keys

Следующие два параметра отвечают за включение совместимости с программой rhosts. Нам такая совместимость только повредит, поэтому оставляем значения по умолчанию.

IgnoreRhosts yes

RhostsRSAAuthentication no

Аутентификация hostbased нам тоже не нужна и она уже отключена, поэтому оставляем существующее значение

HostbasedAuthentication no

Следующая строка нужна для совместимости с rhost – оставляем закомментированной.

#IgnoreUserKnownHosts yes

Параметр PermitEmptyPasswords разрешает или запрещает вход с пустым паролем. Естественно, запрещаем вход с пустым паролем – оставляем no.

PermitEmptyPasswords no

Параметр ChallengeResponseAuthentication включает PAM интерфейс. Если задано значение yes, то для всех типов аутентификации помимо обработки модуля сессии и аккаунта PAM, будет использоваться аутентификация на основе запроса-ответа (ChallengeResponseAuthentication и PasswordAuthentication) Т.к. аутентификация запросов-ответов в PAM обычно выполняет ту же роль, что и парольная аутентификация, следует отключить, либо PasswordAuthentication, либо ChallengeResponseAuthentication.

ChallengeResponseAuthentication no

Следующий параметр отвечает за аутентификацию по паролю. Сейчас используется аутентификация по ключу хоста – просто раскомментируем строку.

PasswordAuthentication yes

Группу из четырёх параметров, отвечающих за аутентификацию Kerberos, оставляем без изменений – не раскомментированными.

#KerberosAuthentication no

#KerberosGetAFSToken no

#KerberosOrLocalPasswd yes

#KerberosTicketCleanup yes

Следующие два закомментированных параметра отвечают за то, разрешена ли аутентификация пользователя на основе GSSAPI или нет. Для наших целей аутентификация GSSAPI не нужна – оставляем без изменений.

#GSSAPIAuthentication no

#GSSAPICleanupCredentials yes

Параметры, начинающиеся с X11, отвечают за проброс иксов через ssh туннель. Ниш сервер не имеет иксов, поэтому закомментируем эти опции

# X11Forwarding yes

# X11DisplayOffset 10

Опция PrintMotd выводит при подключении к sshd так называемое сообщение дня, что на самом деле является содержимым файла /etc/motd. Опция PrintLastLog очень полезна, так как она включает отображение информации о том, когда вы последний раз и с какого компьютера заходили на сервер.

PrintMotd no

PrintLastLog yes

Установим параметру TCPKeepAlive значение no. Этот параметр важен для поддержания соединения со стороны сервера, но мы реализуем те же функции, но более безопасней.

TCPKeepAlive no

Для этого добавим два следующих параметра:

ClientAliveCountMax 3

ClientAliveInterval 20

Первый из этих параметров определяет количество запросов, которое ssh-сервер отправляет ssh-клиентам через определённые промежутки времени. Как только установленное значение запросов достигнуто, а клиент так и не ответил, соединение будет разорвано. Если не посылать такие запросы, то сессии на сервере придётся закрывать вручную, так как они будут длиться бесконечно, отбирая часть ресурсов. Второй параметр определяет интервал отправки запросов в секундах. В нашем примере, соединение будет разорвано, если между клиентом и сервером не будет связи в течение одной минуты.

Параметр UseLogin оставляем закомментированным. Его значение по умолчанию и так no.

#UseLogin no

Раскомментируем параметр MaxStartups и выставим ему следующее значение:

MaxStartups 3:30:9

По умолчанию значение данного параметра 10. Это количество неавторизованных подключений к серверу ssh. Длительность такого подключения определяется параметром LoginGraceTime, описанным выше. Перенесём параметр MaxStartups под LoginGraceTime и запишем в виде start:rate:full, где start – это уже имеющееся количество неавторизованных подключений, rate – процент вероятности отклонения попытки подключения, full – максимальное количество неавторизованных соединений. В нашем примере, если уже имеется 3 неавторизованных подключения, то следующее подключение будет отклонено с вероятностью 30%, а если количество неавторизованных подключений достигнет 9, то все последующие попытки подключения будут отвергнуты.

Опция Banner определяет место положения файла-баннера, который будет выведен на экран, при попытке подключиться к серверу sshd. Предлагается файл /etc/issue.net, но можно использовать свой баннер, поместив его, например в /etc/ssh. В Debian по умолчанию выводится содержимое файла /etc/motd.tail. Оставляем как есть.

#Banner /etc/issue.net

Лучше добавим ещё один полезный параметр, который отсутствует в файле sshd_config – DebianBanner. Этот параметр добавляет в строку ответа sshd информацию об операционной системе, при обращению к серверу по протоколу TELNET или при сканировании nmap. Эта строка может выглядеть так: SSH-2.0-OpenSSH_5.5p1 Debian-6+squeeze1. Скроем информацию о нашей операционной системе.

DebianBanner no

Теперь строка ответа будет выглядеть так: SSH-2.0-OpenSSH_5.5p1

Параметр AcceptEnv указывает, какие переменные окружения, переданные клиентом, будут приняты.

AcceptEnv LANG LC_*

Следующий параметр включает внешнюю подсистему (например, FTP). В качестве параметров понимает, имя подсистемы и команду, которая будет выполнена при запросе подсистемы. Команда sftp-server, реализует протокол передачи файлов через SSH – SFTP.

Subsystem sftp /usr/lib/openssh/sftp-server

Параметр UsePAM оставляем без изменений. Если директива UsePAM включена, то запустить sshd можно будет только от имени root.

UsePAM yes

Сохраняем изменения и перезапускаем sshd. Подключаемся, проверяем, если всё в порядке, то настройка сервера ssh с аутентификацией оп ключу хоста закончена. Для разрешения проблем и вывода отладочной информации можно подключаться с ключами: -v, -vv, -vvv.

Настройка ssh клиента

В Debian настройки клиентской части ssh делятся на глобальные и пользовательские. Глобальные клиентские настройки находятся в файле /etc/ssh/ssh_config и применяются ко всем пользователям. Пользовательские настройки могут находиться в домашнем каталоге пользователя, в ~/.ssh/config и применяются к одному пользователю. Файл пользовательских настроек не создаётся автоматически в отличие от файла глобальных настроек клиентской части ssh. Для большинства выполняемых задач подойдут настройки по умолчанию, но для удобства использования, так сказать для тюнинга или для выполнения нестандартных задач клиентские настройки изменяются. Рассмотрим вкратце некоторые из этих настроек. Полезно помнить о приоритетах настроек: высший приоритет имеют ключи командной строки, затем следуют настройки пользователя, а после них используются глобальные настройки клиентской части.

Параметр Host. Ограничивает множество хостов, к которым применяются последующие (до ближайшей новой директивы Host) директивы, по указанным шаблонам (хост должен соответствовать хотя бы одному шаблону). Шаблон, состоящий из одного символа *, соответствует любому хосту. Под хостом в данном контексте понимается аргумент имя_хоста передаваемый в командной строке (т.е. никаких преобразований перед сравнением не выполняется).

Параметр HostName. Устанавливает соответствие между псевдонимами, сокращениями и настоящими именами хостов. По умолчанию используется имя, передаваемое в командной строке. Допустимо непосредственное указание IP-адресов.

Параметр Port. Порт на удалённой машине, к которому следует подключаться. Значение по умолчанию – 22

Параметр User. Имя пользователя, которое следует использовать при регистрации в удалённой системе. Полезно, когда на разных серверах используются разные имена, т.к. избавляет от надобности вспоминать каждый раз нужное имя.

В качестве примера я создам файл пользовательских настроек /home/selifan/.ssh/config следующего содержания:

Host sunup

HostName sunup.aitishnik.local

Port 2203

User andrey

Host windbag

HostName windbag.nnov.ru

Port 2280

User joker

Host 212.177.65.1

HostName 212.177.65.1

Port 2222

User forester

Теперь при подключении к компьютерам sunup.aitishnik.local, windbag или по ip адресу 212.177.65.1 мне не нужно вспоминать, ни имя пользователя, ни ssh порт подключения, достаточно после ssh набрать имя сервера. Просто и удобно! Описания всех параметров, значений и некоторых примеров находятся в man ssh_config. Продолжаем настраивать SSH и читаем “Генерация ключей SSH”.

Помните, что у нас вы можете не только купить готовый сайт или заказать его разработку, но и подобрать подходящий тариф поддержки сайта, заказать продвижение сайта в поисковых системах, а так же зарегистрировать домен в одной из двухсот доменных зон и выбрать недорогой тариф хостинга! Айтишник РУ

Необходимые компоненты

Мы предполагаем, что Вы используете систему Linux или macOS с установленным клиентом OpenSSH.

Расположение файла конфигурации SSH

OpenSSH в клиентский файл конфигурации имеет имя config и хранится в каталоге .ssh в разделе Домашний каталог пользователя. Этот каталог ~/.ssh создается автоматически, когда пользователь запускает SSH команду впервые.

Если вы никогда не использовали ssh команду, то сначала нужно создать каталог, используя:

mkdir -p ~/.ssh && chmod 700 ~/.ssh

По умолчанию конфигурационный файл ssh может не существовать, поэтому вам может понадобиться, чтобы создать его с помощью команды Touch:

touch ~/.ssh/config && chmod 600 ~/.ssh/config

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

chmod 700 ~/.ssh/config

Структура и шаблоны файлов конфигурации SSH

Конфигурационный файл SSH имеет следующую структуру:

Host hostname1 SSH_OPTION value SSH_OPTION value Host hostname2 SSH_OPTION value Host * SSH_OPTION value

Содержимое файла конфигурации клиента SSH организовано в строфы (разделы). Каждая строфа начинается с директивы Host и содержать конкретные параметры SSH, которые используются при установлении соединения с удаленным сервером SSH.

Отступ не требуется, но рекомендуется, так как это сделает файл легче читать.

Эти директивы Host могут содержать один рисунок или разделенный пробелами список моделей. Каждый шаблон может содержать ноль или более символов без пробелов или один из следующих описателей шаблона:

  • *– соответствует нулю или более символов. Например, Host * будет соответствовать всем хостам, а 192.168.0.* будет соответствовать всем хостам в подсети 192.168.0.0/24.
  • ?– соответствует ровно одному символу. Шаблон, Host 10.10.0.? будет соответствовать всем хостам в диапазоне 10.10.0.[0-9].
  • !– в начале шаблона будет отменено его соответствие. Например, Host 10.10.0.* !10.10.0.5 будет соответствовать любой хост в подсети 10.10.0.0/24, кроме 10.10.0.5.

SSH-клиент считывает файл конфигурации по строфам, и если несколько шаблонов совпадают, параметры из первой соответствующей строфы имеют приоритет. Таким образом, в начале файла должны быть заданы дополнительные объявления, а в конце файла – более общие переопределения.

Вы можете найти полный список доступных SSH параметров, введите man ssh_config в терминале или посетив ssh_config man page.

Файл конфигурации SSH также читается другими программами, такими как scp, sftp и rsync.

Пример базового файла конфигурации SSH

Теперь, когда мы рассмотрели основы файла конфигурации SSH, давайте рассмотрим следующий пример.

Обычно, когда вы подключаетесь к удаленному серверу через SSH, вы указываете имя удаленного пользователя, имя хоста и сообщение. Например, чтобы подключиться от имени пользователя andreyex к хосту, вызываемому через dev.example.com порт 2322 из командной строки, введите:

ssh andreyex@dev.example.com -p 2322

Если вы хотите подключиться к серверу, используя те же параметры, что и в приведенной выше команде, просто набрав named, ssh dev вам нужно добавить в файл “~/.ssh/config следующие строки:

~ / .ssh / конфигурацииHost dev HostName dev.example.com User andreyex Port 2322

Теперь, если вы введете:

ssh dev

Клиент ssh прочитает файл конфигурации и будет использовать сведения о соединении, указанные для хоста dev.

Пример общего файла конфигурации SSH

Этот пример дает более подробную информацию о шаблонах хостов и приоритетах опций.

Давайте возьмем следующий пример файла:

Host alex HostName 192.168.1.10 User andreyex Port 7654 IdentityFile ~/.ssh/alex.key Host maxim HostName 192.168.10.20 Host denis HostName 192.168.10.50 Host *im user destroyer Host * !denis LogLevel INFO Host * User root Compression yes

  • Если вы введете  ssh alex в ssh, клиент прочтет файл и применит параметры первого совпадения Host alex. Затем он проверит следующие строфы один за другим на соответствие шаблону. Следующий совпадающий Host * !denis означает, что все хосты, кроме, denis он будет применять параметр подключения из этого раздела. Наконец, последнее определение Host * также соответствует, но клиент ssh выберет только опцию Compression, потому что эта опция User уже определена в разделе Host alex. Полный список параметров, используемых в этом случае, выглядит следующим образом:HostName 192.168.1.10 User andreyex Port 7654 IdentityFile ~/.ssh/alex.key LogLevel INFO Compression yes
  • При работе ssh alex шаблоны соответствия хоста являются: Host maxim, Host * !denis и Host *. Варианты, используемые в этом случае:HostName 192.168.10.20 LogLevel INFO Compression yes
  • Если вы запускаете ssh denis соответствующий узел моделей являются: Host denis и Host *. В этом случае используются следующие параметры:HostName 192.168.10.50 Compression yes
  • Для всех других вариантов соединений, указанных в секциях Host * !denis и Host * будут использоваться.

Переопределить опцию файла конфигурации SSH

Клиент ssh получает свою конфигурацию в следующем порядке приоритета:

  1. Параметры, указанные в командной строке
  2. Параметры, определенные в ~/.ssh/config
  3. Параметры, определенные в /etc/ssh/ssh_config

Если вы хотите переопределить один параметр, вы можете указать его в командной строке. Например, если у вас есть следующее определение:

Host dev HostName dev.example.com User andreyex Port 2322

и вы хотите использовать все остальные параметры, кроме как для подключения в качестве пользователя, root а не andreyex просто указать пользователя в командной строке:

ssh -o “User=root” dev

Переключатель -F( configfile) позволяет указать альтернативный файл конфигурации для каждого пользователя.

Если вы хотите, чтобы ваш ssh-клиент игнорировал все параметры, указанные в вашем конфигурационном файле ssh, вы можете использовать:

ssh -F /dev/null user@example.com

Как ограничить доступ по SSH

Все изменения вносятся в /etc/ssh/sshd_config

Чтобы изменения вступили в силу, необходимо перезагрузить SSH

Сменить порт

Port 9724

Теперь при авторизации вам нужно вместо стандартного 22 порта указывать 9724.

Способ очень простой и действенный против большинства простых ботов хакеров, которые стучатся в стандартные порты. Тут главное не создать конфликт с другими службами и подобрать заведомо неиспользуемое число.

Запретить связь по старому протоколу

Здесь мы определяем, что связь возможна только по протоколу v2

Protocol 2

Запретить авторизацию под root

PermitRootLogin no

По умолчанию no. Если yes, можно авторизовываться под рутом. Под root работать небезопасно, лучше создать своего пользователя и работать под ним.

Если вы авторизованы не под root, перед всеми консольными командами нужно добавлять sudo — расшифровывается как Substitute User and DO — подмени юзера и делай (под ним). Например, позволяет исполнять команды от имени суперпользователя root.

Уменьшить число попыток авторизации

MaxAuthTries 2

Количество попыток ввода пароля. По умолчанию 6. При неудачном переборе сеанс связи обрывается.

Уменьшить время ожидания авторизации

LoginGraceTime 30s

По умолчанию, 120 секунд может длиться сеанс авторизации. По истечению этого времени он обрывается. 2 минуты на авторизацию — это перебор, всё это время сервер держит связь открытой, что очень нерационально. Полминуты за глаза хватит.

Закрыть доступ по IP

Прежде чем настраивать ограничения по IP, убедитесь, что в случае ошибки в настройке и последующего бана собственного IP у вас останется альтернативный способ вернуть доступ к серверу

Если доступ нужен только вам, самым простым и надёжным будет закрыть доступ отовсюду, кроме вашего IP или, если он динамический, то диапазона IP.

  1. Открываем /etc/hosts.allow и добавляем туда SSHD: 192.168.1.1где 192.168.1.1 — ваш IP. Если у вас динамический IP, определите IP с маской подсети и запишите Вашу подсеть вместо IP, например:SSHD: 192.168.0.0/16
  2. Открываем /etc/hosts.deny и добавляем туда: SSHD: ALL

Теперь никто, кроме вас, не сможет авторизоваться на сервере по SSH.

Ещё один способ ограничения доступа по IP

Можно воспользоваться следующей директивой:

AllowUsers = *@1.2.3.4

Здесь мы разрешаем доступ только для IP 1.2.3.4

Настраиваем SSH в Ubuntu

Если вы еще не выполнили инсталляцию на серверный и клиентский ПК, следует это сделать первоначально, благо осуществляется вся процедура достаточно просто и не займет много времени. С детальным руководством по этой теме знакомьтесь в другой нашей статье по следующей ссылке. В ней также показана процедура редактирования файла конфигурации и тестирование работы SSH, поэтому сегодня мы остановимся немного на других задачах.

 

Создание пары ключей RSA

В только что установленном SSH еще нет заданных ключей для осуществления подключения от сервера к клиенту и наоборот. Все эти параметры необходимо задать вручную сразу же после добавления всех компонентов протокола. Пара ключей работает с помощью алгоритма RSA (сокращение от фамилий разработчиков Rivest, Shamir и Adleman). Благодаря этой криптосистеме через специальные алгоритмы производится шифрование ключей. Для создания пары открытых ключей вам нужно лишь ввести соответствующие команды в консоль и следовать появившимся инструкциям.

    1. Перейдите к работе с «Терминалом» любым удобным методом, например, открыв его через меню или комбинацию клавиш Ctrl + Alt + T.

Запустить терминал в Ubuntu для дальнейшей настройки SSH

    1. Введите команду ssh-keygen, а затем нажмите на клавишу Enter.

Создать ключ SSH через консоль в операционной системе Ubuntu

    1. Будет предложено создать файл, куда сохранятся ключи. Если желаете оставить их в расположении, выбранном по умолчанию, просто нажмите на Enter.

Выбрать файл для сохранения ключей протокола SSH в Ubuntu

    1. Открытый ключ может быть защищен кодовой фразой. Если хотите использовать эту опцию, в появившейся строке напишите пароль. Вводимые символы при этом отображаться не будут. В новой строке потребуется его повторить.

Ввод ключевой фразы при создании ключа SSH в Ubuntu

    1. Далее вы увидите уведомление о том, что ключ был сохранен, а также сможете ознакомиться с его случайным графическим изображением.

Успешное создание ключей для SSH в операционной системе Ubuntu

Теперь имеется созданная пара ключей — секретный и открытый, которые будут использоваться для дальнейшего подключения между компьютерами. Нужно лишь поместить ключ на сервер, чтобы аутентификация SSH проходила успешно.

Копирование открытого ключа на сервер

Существует три метода копирования ключей. Каждый из них будет наиболее оптимален в различных ситуациях, когда, например, один из способов не работает или не подходит для определенного пользователя. Мы предлагаем рассмотреть все три варианта, начав с самого простого и действенного.

Вариант 1: Команда ssh-copy-id

Команда ssh-copy-id встроена в операционную систему, поэтому для ее выполнения не нужно устанавливать никаких дополнительных компонентов. Соблюдайте простой синтаксис, чтобы скопировать ключ. В «Терминале» необходимо ввести ssh-copy-id username@remote_host, где username@remote_host — имя удаленного компьютера.

Скопировать ключ SSH через специальную утилиту в Ubuntu

При первом подключении вы получите уведомление текстом:

The authenticity of host ‘203.0.113.1 (203.0.113.1)’ can’t be established.

ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.

Are you sure you want to continue connecting (yes/no)? yes

Надо указать вариант yes для продолжения соединения. После этого утилита самостоятельно займется поиском ключа в виде файла id_rsa.pub, который был создан ранее. При успешном обнаружении отобразится такой результат:

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed

/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed — if you are prompted now it is to install the new keys

username@203.0.113.1’s password:

Укажите пароль от удаленного хоста, чтобы утилита смогла войти в него. Инструмент будет копировать данные из файла публичного ключа ~/.ssh/id_rsa.pub, а после этого на экране появится сообщение:

Number of key(s) added: 1

Now try logging into the machine, with: “ssh ‘username@203.0.113.1′”

and check to make sure that only the key(s) you wanted were added.

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

Вариант 2: Копирование открытого ключа через SSH

Если у вас не получается воспользоваться упомянутой выше утилитой, но имеется пароль для входа на удаленный сервер SSH, можете загрузить свой пользовательский ключ вручную, тем самым обеспечив дальнейшую стабильную аутентификацию при соединении. Используется для этого команда cat, которая прочитает данные из файла, а потом они будут отправлены на сервер. В консоли потребуется ввести строку

cat ~/.ssh/id_rsa.pub | ssh username@remote_host “mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys”.

Передать скопированный ключ через специальную утилиту Ubuntu

При появлении сообщения

The authenticity of host ‘203.0.113.1 (203.0.113.1)’ can’t be established.

ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.

Are you sure you want to continue connecting (yes/no)? yes

продолжите подключение и введите пароль для входа на сервер. После этого открытый ключ будет автоматически скопирован в конец файла конфигурации authorized_keys.

Вариант 3: Ручное копирование открытого ключа

В случае отсутствия доступа к удаленному компьютеру через SSH-сервер, все описанные выше действия выполняются вручную. Для этого сначала узнается информация о ключе на серверном ПК через команду cat ~/.ssh/id_rsa.pub.

Просмотреть информацию о ключе через команду cat в Ubuntu

На экране будет отображена примерно такая строка: ssh-rsa + ключ в виде набора символов== demo@test. После этого перейдите к работе на удаленное устройство, где создайте новую директорию через mkdir -p ~/.ssh. В ней дополнительно создается файл authorized_keys. Далее вставьте туда ключ, который вы узнали ранее через echo + строка публичного ключа >> ~/.ssh/authorized_keys. После этого можно пробовать проводить аутентификацию с сервером без использования паролей.

Аутентификация на сервере через созданный ключ

В предыдущем разделе вы узнали о трех методах копирования ключа удаленного компьютера на сервер. Такие действия позволят подключиться без использования пароля. Выполняется эта процедура через командную строку путем ввода shh ssh username@remote_host, где username@remote_host — имя пользователя и хост нужного компьютера. При первом подключении вы будете уведомлены о незнакомом соединении и можете продолжить, выбрав вариант yes.

Подключиться к удаленному компьютеру через SSH в Ubuntu

Подключение произойдет автоматически, если во время создания пары ключей не была задана ключевая фраза (passphrase). В противном случае сначала придется ввести ее, чтобы продолжить работу с SSH.

Отключение аутентификации по паролю

Успешной настройка копирования ключей считается в той ситуации, когда удается войти на сервер без использования пароля. Однако возможность аутентификации таким образом позволяет злоумышленникам использовать инструменты для подбора пароля и взламывать защищенное соединение. Обезопасить себя от таких случаев позволит полноценное отключение входа по паролю в конфигурационном файле SSH. Для этого потребуется:

    1. В «Терминале» откройте конфигурационный файл через редактор с помощью команды sudo gedit /etc/ssh/sshd_config.

Запустить конфигурационный файл SSH через редактор в Ubuntu

    1. Найдите строку «PasswordAuthentication» и уберите знак # в начале, чтобы раскомментировать параметр.

Раскомментировать строку с аутентификацией по паролю в Ubuntu

    1. Измените значение на no и сохраните текущую конфигурацию.

Отключить аутентификацию по паролю в SSH через Ubuntu

    1. Закройте редактор и перезапустите сервер sudo systemctl restart ssh.

Перезапустить сервер SSH в операционной системе Ubuntu

Аутентификация по паролю отключится, и войти на сервер можно будет только с использованием специально созданных для этого ключей с алгоритмом RSA.

Настройка стандартного firewall

В Убунту сетевой защитой по умолчанию выступает фаервол Uncomplicated Firewall (UFW). Он позволяет разрешать соединения для избранных сервисов. Каждое приложение создает свой профиль в этом инструменте, а UFW управляет ими, разрешая или запрещая подключения. Настройка профиля SSH путем добавления его в список осуществляется так:

    1. Откройте список профилей firewall через команду sudo ufw app list.

Посмотреть список профилей стандартного фаервола в Ubuntu

    1. Введите пароль от учетной записи для отображения информации.

Ввод пароля для просмотра списка профилей стандартного фаервола Ubuntu

    1. Вы увидите лист доступных приложений, среди них должен находиться и OpenSSH.

Список профилей стандартного фаервола в Ubuntu

    1. Теперь следует разрешить соединения через SSH. Для этого добавим его в список разрешенных профилей с помощью sudo ufw allow OpenSSH.

Добавить сервер SSH для разрешения соединения в фаервол Ubuntu

    1. Включите firewall, обновив правила, sudo ufw enable.

Перезапустить фаервол с обновлениями правил в Ubuntu

    1. Для убеждения в том, что соединения разрешены, следует прописать sudo ufw status, после чего вы увидите состояние сети.

Посмотреть список разрешенных соединений фаервола в Ubuntu

На этом наши инструкции по конфигурации SSH в Ubuntu завершены. Дальнейшие настройки конфигурационного файла и других параметров осуществляются лично каждым пользователем под его запросы. Ознакомиться с действием всех составляющих SSH вы можете в официальной документации протокола.

Включение SSH в Ubuntu

По умолчанию при первой установке Ubuntu удаленный доступ через SSH запрещен. Включение SSH в Ubuntu довольно просто.

Выполните следующие действия как пользователь root или пользователь с привилегиями sudo, чтобы установить и включить SSH в вашей системе Ubuntu:

  1. Откройте терминал с помощью Ctrl+Alt+T и установите пакет openssh-server:sudo apt update sudo apt install openssh-serverПри появлении запроса введите пароль и нажмите Enter, чтобы продолжить установку.
  2. После завершения установки служба SSH запустится автоматически. Вы можете проверить, работает ли SSH, набрав:sudo systemctl status sshВ выводе должно быть указано, что служба запущена и включена при загрузке системы:● ssh.service – OpenBSD Secure Shell server Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2020-06-01 12:34:00 CEST; 9h ago …

    Нажмите q, чтобы вернуться к приглашению командной строки.

  3. Ubuntu поставляется с утилитой настройки брандмауэра под названием UFW. Если в вашей системе включен брандмауэр , обязательно откройте порт SSH:sudo ufw allow ssh

Все! Теперь вы можете подключиться к вашей системе Ubuntu через SSH с любого удаленного компьютера. В системах Linux и macOS клиенты SSH установлены по умолчанию. Чтобы подключиться с компьютера под управлением Windows, используйте SSH-клиент, например PuTTY.

Подключение к SSH-серверу

Чтобы подключиться к вашей машине с Ubuntu через локальную сеть, вызовите команду ssh, а затем имя пользователя и IP-адрес в следующем формате:

ssh username@ip_addressУбедитесь, что вы поменяли имя пользователя username и IP-адрес ip_address компьютера с Ubuntu, на котором вы установили SSH.

Если вы не знаете свой IP-адрес, вы можете легко найти его с помощью команды ip:

ip a

Найдя IP-адрес, войдите на удаленный компьютер, выполнив следующую команду ssh:

ssh andreyex@10.0.2.15

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

The authenticity of host ‘10.0.2.15 (10.0.2.15)’ can’t be established. ECDSA key fingerprint is SHA256:Vybt22mVXuNuB5unE++yowF7lgA/9/2bLSiO3qmYWBY. Are you sure you want to continue connecting (yes/no)?

Введите yes и вам будет предложено ввести пароль.

Warning: Permanently added ‘10.0.2.15’ (ECDSA) to the list of known hosts. andreyex@10.0.2.15’s password:

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

Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.4.0-26-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage …

Вы вошли в систему на своей машине с Ubuntu.

Подключение к SSH после NAT

Чтобы подключиться к домашней машине Ubuntu через Интернет, вам необходимо знать ваш публичный IP-адрес и настроить маршрутизатор на прием данных через порт 22 и отправку их в систему Ubuntu, где работает SSH.

Для того, чтобы определить публичный IP – адрес компьютера , который вы пытаетесь SSH к, просто перейдите по следующей ссылке: https://api.ipify.org.

Когда дело доходит до настройки переадресации портов , у каждого маршрутизатора есть свой способ настройки переадресации портов. Вы должны проконсультироваться со своей документацией маршрутизатора о том, как настроить переадресацию портов. Короче говоря, вам нужно ввести номер порта, куда будут поступать запросы (по умолчанию SSH-порт – 22) и частный IP-адрес, который вы нашли ранее (с помощью ip aкоманды) компьютера, на котором работает SSH.

Найдя IP-адрес и настроив маршрутизатор, вы можете войти в систему, набрав:

ssh username@public_ip_address

Если вы подключаете свою машину к Интернету, рекомендуется предпринять некоторые меры безопасности. Наиболее простой способ – настроить маршрутизатор на прием трафика SSH через нестандартный порт и перенаправить его на порт 22 на компьютере, на котором работает служба SSH.

Вы также можете настроить аутентификацию на основе ключей SSH и подключиться к вашему компьютеру с Ubuntu без ввода пароля.

Отключение SSH в Ubuntu

Чтобы отключить сервер SSH в вашей системе Ubuntu, просто остановите службу SSH, выполнив:

sudo systemctl disable –now ssh

Позже, чтобы включить его, введите:

sudo systemctl enable –now ssh

[spoiler title=”Источники”]

  • https://www.ibm.com/developerworks/ru/library/au-sshsecurity/
  • https://www.vseprolinux.ru/ssh-linux
  • https://ITProffi.ru/ustanovka-i-nastrojka-servera-ssh-v-linux/
  • https://www.Aitishnik.ru/linux/ssh-debian/nastroyka-openssh.html
  • https://andreyex.ru/operacionnaya-sistema-linux/ispolzovanie-fajla-konfiguratsii-ssh/
  • https://sheensay.ru/ssh
  • https://lumpics.ru/configuration-ssh-in-ubuntu/
  • https://andreyex.ru/ubuntu/kak-vklyuchit-ssh-v-ubuntu-20-04/


[/spoiler]


2020-07-27T15:39:49
Linux

Screen Linux незаменимый инструмент для профессионалов



























2.6/5 — (13 голосов)

 

Screen — это программа для «уплотнения» (мультиплекса) физических консолей. Суть в том, что несколько процессов (как правило интерактивных шеллов) могут работать в одном окне консоли. То есть эта программа позволяет пользователю иметь несколько экземпляров терминалов внутри одного терминала этого менеджера окон. Речь идёт не о вкладках, а о перемещении терминалов в фон. Одним из эффектов работы screen является то, что при закрытии окна терминала, процесс продолжает работу.

Приложение screen очень полезно если вы имеете дело с несколькими программами из интерфейса командной строки, а также для отделения программ от оболочки терминала. Она также позволяет вам делиться вашими сессиями с другими пользователями и отсоединять/подсоединять сессии терминала.

О Linux Screen

Поначалу это может показаться пугающим, но освоив Linux Screen, предоставляются безграничные возможности. Эффективное использование системных ресурсов делает его незаменимым инструментом.Screen Linux: инструмент для профессионалов

Linux Screen — это терминальное приложение, разработанное проектом GNU. Часто официальная документация называет это GNU Screen. Linux Screen имеет четкую цель — терминальное мультиплексирование.

Другими словами, Screen делит физический терминал на несколько виртуальных сессий. Таким образом, останавливает и суммирует активность в них.

Screen работает следующим образом — если вы работаете в терминальной сессии во время использования Screen, при выключении компьютера, он сохранится в этот момент. Когда к терминалу будет произведен повторный доступ, терминал вернется к экрану, на котором он находился прямо перед выключением.

Использование экрана является фундаментальным навыком. Возможно, он не наполнен сложными технологиями, но каждый пользователь Linux должен знать, как его использовать.

Установка Linux Screen

Screen обычно устанавливается по умолчанию во всех основных дистрибутивах Linux. Если ваша система не имеет предустановленной системы, то это не проблема. Установка проста.

Во-первых, нам нужно подключиться к нашему серверу, используя SSH. Для этого запустите:

ssh your-user @ server

Во-втрых, если вы используете Linux на своем компьютере, просто откройте терминал из главного меню.

В случае Debian, Ubuntu, Linux Mint и его производных вы можете выполнить следующую команду:

sudo apt install screen

sudo apt install screen Screen Linux

В конце установки мы можем проверить текущую версию, используя следующую командную строку:

screen —versionscreen --version Screen Linux

Запуск screen в первый раз

Просто наберите screen в приглашении командной строки:

screen

Будет выведена информация о программе — нажмите ENTER, чтобы её скрыть. Затем приглашение командной строки вернётся в точно такое же, как было и ранее.

Справка по параметрам screen

Когда вы вошли в screen, вы можете делать вашу обычную работу как будто бы вы в обычном окружении командной строки. Программа screen расширяет функциольность за счёт своих команд (параметров).

Нажмите Ctrl-A, а затем ? (то есть Shift+/). Затем вы увидите все команды (параметры) screen.

Command key: ^A Literal ^A: a break ^B b dumptermcap . info i meta a pow_detach D reset Z title A xoff ^S s clear C fit F kill K k monitor M prev ^H ^P p ^? screen ^C c vbell ^G xon ^Q q colon : flow ^F f lastmsg ^M m next ^@ ^N sp n quit select ‘ version v copy ^[ [ focus ^I license , number N readbuf < silence _ width W detach ^D d hardcopy h lockscreen ^X x only Q redisplay ^L l split S windows ^W w digraph ^V help ? log H other ^A remove X suspend ^Z z wrap ^R r displays * history { } login L pow_break B removebuf = time ^T t writebuf > ^] paste . ” windowlist -b – select – 0 select 0 1 select 1 2 select 2 3 select 3 4 select 4 5 select 5 6 select 6 7 select 7 8 select 8 9 select 9 I login on O login off ] paste . | split -v :kB: focus prev

Чтобы выйти из экрана справки, нажмите Пробел или Enter.

Отсоединение процесса от консоли в screen

Одним из преимуществ screen является возможность отсоединить от консоли процесс, который запущен внутри screen. Далее вы можете даже закрыть консоль (или отключиться от SSH) — процесс всё равно продолжит свою работу. Затем вы можете восстановить окно консоли — вы увидите, что программа всё это время работала и её данные не потеряны.

Пример сценария: вы работаете по SSH на вашем сервере. Вам нужно запустить программу, выполнение которой требует много времени. Это может быть скачивание большого патча для системы с помощью wget или любая длительная команда. В качестве примера я возьму обычный ping. Предположим мне нужно проверить качество связи с помощью ping на протяжении двух часов. Если я отключусь от SSH или связь будет потеряна случайно, то тогда процесс выполнения команды в консоли будет остановлен и нужно будет вновь начинать сначала. Чтобы этого избежать, мы можем использовать screen для отсоединения процесса от консоли.

Рассмотрим на примере конкретных команд.

Вначале входим в screen:

screen

Затем я запускаю пинг:

ping ya.ru

В процессе работы программы, мы можем нажать Ctrl-a и d. Вывод от программы прекратиться, мы увидим примерно следующую информацию:


[detached from 13677.pts-2.HackWare]

Повторное подсоединение консоли с запущенным процессом к screen

После отсоединения процесса и закрытия screens, вы можете отключиться от сервера, то есть закрыть SSH сессию и заняться другими делами. Затем вы можете подключиться к SSH снова — причём, возможно даже с другого компьютера. После этого вы можете увидеть прогресс выполнения вашего процесса (пинг, загрузка, что угодно). Чтобы это сделать, нужно восстановить screen. Для этого запустите следующую команду:

screen -r

И вы увидите, что процесс, который вы здесь оставили, всё ещё запущен.

Когда у вас больше чем одна сессия screen, то вам нужно будет ввести ID (идентификатор) сессии screen. Используйте screen -ls чтобы показать, как много сессий доступно:

Пример вывода:

There are screens on: 13786.pts-2.HackWare (Detached) 13677.pts-2.HackWare (Detached) 2 Sockets in /run/screens/S-mial.

Если вы хотите восстановить сессию screen 13786.pts-2.HackWare, тогда наберите следующую команду:

screen -r 13786

Использование нескольких screen

Когда нужен больше чем один screen для выполнения работы, это возможно? Да, можно одновременно работать с несколькими screen. Вы можете запустить несколько окон screen одновременно — есть два способа сделать это.

Во-первых, вы можете отсоединить первый экран screen для запуска другого screen в реальном терминале.

Во-вторых, вы можете делать вложенные экраны screen.

Как установить экран

Экран поставляется с предустановленной на некоторых из популярных дистрибутивов. Вы можете проверить установлен он или нет на сервере с помощью следующей команды

screen -v Screen version 4.00.03 (FAU)

Если у вас нет экрана к VPS, вы можете легко установить его с помощью менеджера пакетов, предоставляемой с операционной системой.

Как начать сеанс экрана

Вы можете начать экран, набрав слово “screen” в командной строке и новый сеанс экран будет запущен, который выглядит так же, как в командной строке

screen

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

screen -S name

и заменить ‘name‘ с понятным названием для вашей сессии.

Отсоединить экран от сессии

Для того, чтобы отключиться от текущего сеанса экрана вы можете нажать клавишу ‘Ctrl-A‘ и ‘ D‘ на клавиатуре. Все сеансы экрана будут по- прежнему активны, и вы можете повторно подсоединиться к ним в любое время позже.

Заново на экран сессии

Если вы оторваны от сеанса или ваше соединение прерывается по какой-то причине, вы можете легко повторно подсоединиться, выполнив следующую команду:

screen -r

Если у вас есть несколько сеансов экрана вы можете перечислить их с ‘ ls

screen -ls There are screens on: 7880.session    (Detached) 7934.session2   (Detached) 7907.session1   (Detached) 3 Sockets in /var/run/screen/S-root.

В нашем примере, у нас есть три активных сеансов экрана. Итак, если вы хотите восстановить сеанс “session2”, вы можете выполнить

screen -r 7934

или вы можете использовать имя экрана

screen -r -S session2

Завершить сеанс экрана

Есть несколько способов, чтобы завершить сеанс экрана. Вы можете сделать это, нажав ‘Ctrl‘ + ‘ D‘ на клавиатуре или с помощью команды командной строки ‘exit‘.

Для того чтобы увидеть все полезные свойства экрана команды вы можете проверить man page screen.

man screen NAME screen – screen manager with VT100/ANSI terminal emulation SYNOPSIS screen [ -options ] [ cmd [ args ] ] screen -r [[pid.]tty[.host]] screen -r sessionowner/[[pid.]tty[.host]]

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Установка утилиты screen

Разница в инсталляции программы на разных дистрибутивах заключается в программах управления пакетами и их командами.

Чтобы установить screen в Ubuntu, Linux Mint, Deepin и других систем семейства Debian, используйте команду apt:

sudo apt install screen

В Manjaro, Antergos и других Arch-подобных ОС screen располагается в AUR, поэтому используйте соответствующую программу управления пакетами, например aurman:

aurman -S screen

Для инсталляции screen в системах на основе Red Hat (например Fedora и CentOS) используйте утилиту dnf:

dnf install screen

Основы работы команды screen

Принцип работы GNU/Linux в целом заключается в использовании небольших утилит, которые делают что-то одно, но хорошо. И эта программа — не исключение.

Команда screen Linux является консольной программой и имеет однозначное определение, соответствующее названию, — это оконный менеджер, разделяющий один физический терминал между несколькими процессами. Подходит для прямого либо удалённого администрирования.

Возможности программы

Screen позволяет переключаться между терминалами, в которых выполняются процессы, не прерывая их. Это особенно эффективно, когда необходимо производить сборку/установку ПО и мониторить дисковое пространство или использовать аппаратные ресурсы.

Screen может разделять текущий терминал на меньшее количество окон с возможностью запуска в них того же или других терминалов. Это ещё больше упрощает вышеописанную задачу, особенно при использовании больших мониторов.

Также к одной сессии screen может подключаться несколько пользователей. Это эффективно при обучении персонала.

Основные команды screen

Откройте терминал. Для запуска первого окна наберите:–

screen

Создастся новая сессия программы и появится приветственное сообщение. Для его закрытия нужно нажать Space или Enter.

Приветственное сообщение Screen

Все управляющие команды начинаются с комбинации клавиш Ctrl + a, затем следует буква или сочетание клавиш. Буквы разных регистров выполняют разные команды. Также сочетания можно заменять текстом. Для его ввода нажмите Ctrl + a и :, после чего вводите текст.

Например, чтобы создать новое окно, нажмите по очереди сочетание Ctrl + a и затем c. Для просмотра списка созданных окон нажмите Ctrl + a и w.

Список всех окон

Для перехода в любое из созданных окон сессии используется комбинация Ctrl + a и номер, который за ним закреплён, или Ctrl + a и , после чего нужно выбрать стрелками необходимое. Для последовательного перехода используйте Ctrl + a и n (следующее окно) или p (предыдущее окно).

Список окон

Чтобы разделить экран по горизонтали, нажмите Ctrl + a и S. Например, для разделения окна по горизонтали напишите split.

screen Split

Будет создано новое окно снизу от текущего, и оно не становится активным. Чтобы разделить по вертикали, нажмите Ctrl + a и | (или введите split -v).

Вертикальный split

Были созданы новые пустые окна. Для переключения между ними используйте Ctrl + a и Tab (или напишите focus). Положение курсора указывает, какое окно является активным в данный момент. Для скрытия окна используйте Ctrl + a и X (или введите remove).

Чтобы запустить в новом окне терминал, нажмите Ctr + a и c (или наберите screen).

Новый терминал screen

Чтобы скрыть все окна и оставить только текущее, используйте Ctrl + a и Q (или напишите only).

Оставить одно окно

Переименовать окно можно с помощью Ctrl + a и A. Внизу появится строка с возможностью заменить старое название.

Переименовать

Чтобы скрыть все окна сессии, нажмите Ctrl + a и . Подтвердите решение нажатием y. Для выхода из менеджера окон нажмите Ctrl + a и d.

Команда screen обладает большим набором горячих клавиш. Полный их список можно посмотреть с помощью Ctrl + a и ?.

Справка команд

При создании новой сессии screen можно задать ей имя. Таким образом можно создать несколько сессий. Чтобы сделать это, используйте параметр -S, после которого укажите название.

screen -S name-of-screen

Посмотреть список запущенных сессий можно командой

screen -ls

Список сессий

Строка, идентифицирующая сессию, состоит из нескольких полей: id, название и статус.

Значение id отображается в списке всех запущенных процессов. Это означает, что его можно завершить с помощью команды kill. Завершить работу текущего окна можно с помощью комбинации Ctrl+a и k>; подтвердите решение нажатием y.

Статус может иметь два состояния: Attached (задействован) и Detached (незадействован). Второе состояние у сессий, в которых ещё не происходили никакие процессы.

Чтобы перейти в нужную сессию, следует указать параметру -r её id или название.

screen -r 23505

Это всё основные команды screen Linux.

Как пользоваться screen Linux

Теперь давайте рассмотрим, как пользоваться screen Linux более подробно.

Пример 1. Необходимо отслеживать изменения файла в реальном времени. Для этого в одном окне будем вносить изменения в новый файл, а в другом ­— отображать файл командой tail с опцией -f:

Отображение изменений в реальном времени

При стирании содержимого показывается сообщение, что файл усечён, при этом этот текст в него, конечно, не записывается.

Пример 2. Необходимо отслеживать размер каталога в реальном времени. В одном окне записываем данные, в другом — отображаем, как изменяется размер домашнего каталога командой watch с задержкой в две секунды.

Watch

Завершение

Очень важно научиться устанавливать и использовать Linux Screen, особенно если вы работаете с администрацией сервера. Мы описали как начать интегрировать его в свой рабочий процесс.


[spoiler title=”Источники”]

  • https://ZaLinux.ru/?p=3089
  • https://linuxvsem.ru/programs/screen-linux
  • https://andreyex.ru/operacionnaya-sistema-linux/osnovy-ispolzovaniya-komandy-screen-i-primery-v-linux/
  • https://losst.ru/komanda-screen-linux


[/spoiler]


2020-07-27T15:39:49
Linux

Samba-сервер в локальной сети с Linux и Windows



























2.7/5 — (3 голоса)

 

Файловый сервер работает по протоколу SMB/CIFS и позволяет предоставить доступ к общим ресурсам в локальной сети, например, текстовым файлам или сетевым принтерам. Для его развертывания на Windows используются штатные средства ОС, на Linux используется файловый сервер Samba.

В инструкции рассмотрена настройка файлового сервера на серверах с операционными системами Linux и Windows. На сервере будет находиться 2 каталога – публичный и приватный. К файловому серверу подключение будет происходить как с операционной системы Windows, так и с Linux, т.к. в виртуальной или физической локальной сети могут находиться серверы с разными ОС.

Схема Samba

Создание и настройка частной сети

Для начала в панели управления должны быть созданы все необходимые для сети серверы.

После создания необходимо объединить все машины в единую локальную сеть через панель управления в разделе Сети. В результате серверы получат локальные IP-адреса.

После создания частной сети необходимо настроить сетевые адаптеры на каждом сервере. Об этом можно прочитать в наших инструкциях:

  1. Настройка сетевого адаптера в Ubuntu и Debian
  2. Настройка сетевого адаптера в CentOS
  3. Настройка сетевого адаптера в Windows

Настройка файлового сервера

Прежде всего, необходимо определиться, на сервере с какой операционной системой будет находиться общий каталог.

Подготовка системы

Прежде чем приступать к работе продумайте схему хранения данных и доступа к ним. Существую разные типы данных, которые мы будем характеризовать по интенсивности доступа к ним, скажем “холодные данные” отличаются тем, что обращения к ним происходят крайне редко (а к некоторым вообще никогда), но при этом они могут занимать значительные объемы. Это прежде всего резервные копии, инсталляционные пакеты, образа дисков и т.д. и т.п.

Противоположность им “горячие данные” – это данные которые интенсивно используются и изменяются, для файлового сервера примером таких данных может служить файловая информационная база 1С:Предприятия. Между ними находятся обычные данные, характер доступа к которым не имеет каких-либо особенностей.

Исходя из типа данных следует выбирать диски для хранения, для “горячих данных” это должны быть быстрые диски или SSD, а для “холодных” подойдут экономичные модели с упором на большой объем. Также не забывайте про RAID, для защиты данных от аппаратного выхода дисков из строя.

Также продумайте структуру директорий и прав доступа к ним. Разумно будет исходить из следующих соображений: разделяйте диски с данными и системой, чтобы при необходимости можно было заменить их без лишних затруднений или перенести на другой сервер. Храните разные типы данных на разных дисках или разделах, скажем, если на разделе для резервных копий закончится свободное место, то это никак не повлияет на работу баз 1С.

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

samba-debian-001.png

Также обратите внимание на имя компьютера, Samba 4 будет использовать его в качестве NetBIOS имени.

После установки ОС следует изменить настройку лимита на количество одновременно открытых файлов, в Linux это 1024, а в Windows 16384. Для этого откройте файл /etc/security/limits.conf и добавьте в конце две строки:

* – nofile 16384
root – nofile 16384

После чего сервер следует перезагрузить.

Настройка файлового сервера на Linux (Debian/Ubuntu)

Для развертывания файлового сервера на системах Linux используется инструмент SAMBA. Ниже перечислены действия по его установке и настройке.

Прежде всего следует обновить локальную базу пакетов:

apt-get update

Далее установите пакеты из главного репозитория:

apt-get install -y samba samba-client

Создайте резервную копию файла конфигурации Samba:

cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

Создайте или выберете директорию, к которой все пользователи будут иметь общий доступ:

mkdir -p /samba/public

Перейдите к этому каталогу и измените режим доступа и владельца:

cd /samba
chmod -R 0755 public

Создайте или выберете каталог, к которому иметь доступ будут ограниченное число пользователей:

mkdir /samba/private

Создайте группу пользователей, которые будут иметь доступ к приватным данным:

groupadd smbgrp

Создайте нужных пользователей с помощью команды useradd:

useradd user1

Добавьте созданных пользователей в группу:

usermod -aG smbgrp user1

Измените группу, которой принадлежит приватная директория:

chgrp smbgrp /samba/private

Задайте пароль, с помощью которого пользователь будет подключаться к каталогу:

smbpasswd -a user1

Откройте файл конфигурации на редактирование с помощью текстового редактора, например nano:

nano /etc/samba/smb.conf

Замените содержимое файла на следующие строки:


[global]workgroup = WORKGROUP
security = user
map to guest = bad user
wins support = no
dns proxy = no
[public]path = /samba/public
guest ok = yes
force user = nobody
browsable = yes
writable = yes
[private]path = /samba/private
valid users = @smbgrp
guest ok = no
browsable = yes
writable = yes

Сохраните внесенные изменения, нажав CTRL+X, затем Enter и Y.

Значения параметров выше:

  • global – раздел с общими настройками для Samba сервера
  • workgroup – рабочая группа Windows, WORKGROUP – значение по умолчанию для всех Windows машин, если вы не меняли самостоятельно
  • security – режим безопасности, значение user означает аутентификацию по логину и паролю
  • map to guest – задает способ обработки запросов, bad user – запросы с неправильным паролем будут отклонены, если такое имя пользователя существует
  • wins support – включить или выключить поддержку WINS
  • dns proxy – возможность запросов к DNS
  • public – название общего каталога, которое будут видеть пользователи сети, может быть произвольным и не совпадать с именем директории
  • path – полный путь до общего каталога
  • browsable – отображение каталога в сетевом окружении
  • writable – использование каталога на запись, инверсия read only
  • guest ok – авторизация без пароля
  • force user – пользователь по умолчанию
  • valid users – список пользователей, у которых есть доступ к каталогу, через @ указывается unix-группа пользователей

Проверить настройки в smb.conf можно с помощью команды:

testparm -s

Чтобы изменения вступили в силу, перезапустите сервис:

service smbd restart

Далее нужно настроить firewall, открыв порты, которые использует SAMBA. Настоятельно рекомендуем разрешить только подключения из локального диапазона IP-адресов или виртуальной частной сети. Адресное пространство вашей частной сети вы можете увидеть в панели управления 1cloud.

Замените значение параметра –s в правилах ниже для соответствия адресному пространству вашей частной сети. Как правило префикс сети /24, если вы явно не подразумеваете иного:

iptables -A INPUT -p tcp -m tcp –dport 445 –s 10.0.0.0/24 -j ACCEPT
iptables -A INPUT -p tcp -m tcp –dport 139 –s 10.0.0.0/24 -j ACCEPT
iptables -A INPUT -p udp -m udp –dport 137 –s 10.0.0.0/24 -j ACCEPT
iptables -A INPUT -p udp -m udp –dport 138 –s 10.0.0.0/24 -j ACCEPT

Теперь необходимо сделать так, чтобы указанные выше правила фаервола iptables были сохранены после перезагрузки машины. Для это установим пакет iptables-persistent:

apt-get install iptables-persistent

После установки откроется окно с предложением последовать запомнить текущие правила iptables для IPv4 и IPv6. Подтвердите это действие.

Проверить актуальные правила iptables можно командой:

iptables -L

В выводе команды вы должны увидеть ранее добавленные разрешающие политики (Accept).

Настройка общего ресурса с гостевым доступом

Начнем с самого простого варианта – создадим общий ресурс, доступ к которому может иметь любой пользователь. Для этого добавим в конец файла /etc/samba/smb.conf следующие строки.


[public]comment = Shared for all
path = /samba/public
read only = no
guest ok = yes

В квадратных скобках задаем имя ресурса, все что ниже скобок – секция этого ресурса. В ней мы указали следующие опции:

  • comment – описание ресурса, необязательный параметр;
  • path – путь к директории;
  • read only – режим только чтения, указываем no>;
  • guest ok – разрешен ли гостевой доступ, указываем yes>;

Теперь создадим саму директорию:

mkdir /samba/public

и установим на нее необходимые права, для гостевого ресурса это 777:

chmod 777 /samba/public

Перезапускаем Samba и пробуем получить доступ с любого Windows-клиента.

samba-debian-002.png
Если все сделано правильно, то сервер появится в сетевом окружении, и вы без проблем получите доступ к созданной нами общей папке.

Настройка корзины для общего ресурса

Полезность корзины на файловом сервере, пожалуй не будет отрицать никто. Человеку свойственно ошибаться и будет очень обидно, если ценой ошибки окажется несколько часов работы, но, к счастью Samba позволяет помещать удаленные файлы в корзину.

Для активации корзины добавьте в секцию к общему ресурсу следующие строки:

vfs objects = recycle
recycle:repository = .recycle
recycle:versions = yes
recycle:keeptree = yes

Первая опция добавит в общий ресурс новый объект – корзину, вторая укажет ее расположение – скрытая папка в корне. Две следующих включают сохранение структуры папок при удалении и сохранение нескольких версий файла с одним и тем же именем. Это нужно в тех случаях, когда разные пользователи удалят разные файлы с одним и тем же именем.

Перезапустим Samba и попробуем что-нибудь удалить.

samba-debian-005.png
Несмотря на грозное предупреждение Проводника удаляемые файлы перемещаются в корзину, откуда мы их можем восстановить.

Как видим, работать с Samba не просто, а очень просто, при том, что мы оставили за кадром многие возможности тонкой настройки, многие из которых требуют отдельных статей. Надеемся, что данный материал окажется вам полезным и поможет быстро и без проблем развернуть файловый сервер на Linux.

Настройка общего публичного каталога на Windows