SSH (Secure Shell) является протоколом, который используется для безопасного доступа к удаленному серверу в локальной сети или Интернете для настройки, управления, мониторинга, устранения неполадок и т.д. В этой статье я расскажу о том, как можно управлять удаленным сервером Linux с помощью SSH.
Как установить открытый SSH-сервер?
После того, как вы установили новую Linux-машину в вашей инфраструктуре, важно сделать ее готовой к удаленному доступу. Поэтому обязательно нужно установить open ssh на удаленном сервере или машине, к которой вы пытаетесь получить доступ.
Debina\Ubuntu
Перед установкой сервера open SSH выполните следующую команду для обновления репозитория.
1 | apt update |
После обновления репозитория выполните следующую команду с правами root для установки открытого SSH-сервера.
1 | apt-get install openssh-server |
Когда появится запрос на подтверждение, нажмите "y" на клавиатуре и дождитесь завершения установки. Это может занять несколько минут.
CentOS
1 | yum install openssh-server |
Когда появится запрос на подтверждение, нажмите "y" на клавиатуре и дождитесь завершения установки. Это может занять несколько минут.
Настройка параметров SSH-сервера
После установки Open SSh на стороне сервера мы можем изменить его основные параметры конфигурации. Откройте терминал и выполните следующую команду с правами root.
1 | nano /etc/ssh/sshd_config |
Ниже приведен пример вывода.
Вы можете изменить различные параметры в вышеуказанном файле.
По умолчанию SSH прослушивает порт 22. Вы можете изменить его на нужный вам порт. Вы также можете изменить максимальное количество сеансов (MaxSessions), которые могут быть установлены с сервером одновременно, по умолчанию установлено значение 10.
Изменение порта SSH сервера
Как мы уже говорили, по умолчанию сервер прослушивает порт 22. Если вы хотите настроить сервер на прослушивание определенного порта, то вот процедура.
Откройте терминал и выполните следующую команду с правами root.
1 | nano /etc/ssh/sshd_config |
Должен открыться файл, как показано на скриншоте выше.
Найдите Port 22 или #Port 22 и введите желаемый номер порта без знака #.
Рекомендуется использовать номер порта между 1024 и 65535, так как порты 0-1023 зарезервированы для определенных служб.
Предположим, чтобы назначить 2222, напишите следующее в файле конфигурации SSH.
1 | Port 2222 |
Ниже приведен пример вывода после изменения номера порта.
Перезапустите службу SSH, выполнив следующую команду на терминале.
1 2 3 4 | #Debian/Ubuntu service ssh restart #CentOs service sshd restart |
Включение входа root на сервере SSH
По умолчанию вы не можете напрямую войти на SSH-сервер с привилегиями root по соображениям безопасности. Если вы хотите включить этот вход, вам необходимо внести изменения в файл конфигурации SSH-сервера.
Откройте терминал и выполните следующую команду с правами root, чтобы открыть файл конфигурации.
1 | nano /etc/ssh/sshd_config |
Добавьте следующую строку в блок аутентификации,
1 | PermitRootLogin yes |
Ниже приведен пример вывода после внесения изменений в конфигурационный файл.
Перезапустите службу SSH, выполнив следующую команду на терминале с правами root.
1 2 3 4 | #Debian/Ubuntu service ssh restart #CentOs service sshd restart |
Сокращение количества неудачных попыток входа на сервер SSH
По умолчанию вы можете сделать 6 попыток входа на SSH-сервер. Как только значение достигает половины от 6, регистрируются дополнительные неудачи входа. Если вы хотите изменить это значение, вам необходимо настроить параметр MaxAuthTries в файле конфигурации SSH-сервера.
Откройте терминал и выполните следующую команду с привилегиями root.
Добавьте следующую строку (предположим, что вы хотите установить это значение равным 1) в блок Authentication.
1 | MaxAuthTries 1 |
Ниже приведен пример вывода после внесения изменений в файл.
Перезапустите службу SSH, выполнив следующую команду на терминале с правами root.
1 2 3 4 | #Debian/Ubuntu service ssh restart #CentOs service sshd restart |
После одного сбоя входа в систему вы получите сообщение о слишком большом количестве сбоев аутентификации.
Настройка SSH-сервера для прослушивания определенных IP-адресов
По умолчанию SSH-сервер прослушивает все IP-адреса, назначенные вашему SSH-серверу. Однако, внеся изменения в конфигурационный файл, вы можете заставить SSH-сервер прослушивать определенные IP-адреса. Вот как это делается.
Предположим, у меня есть два IP-адреса (10.1.1.2 и 10.1.1.3), назначенных моему интерфейсу, как показано на следующем снимке экрана. Я хочу заставить свой сервер прослушивать IP-адрес 10.1.1.2.
Настройка IP-адреса прослушивания SSH-сервера
Откройте терминал и выполните следующую команду с правами root, чтобы открыть файл конфигурации SSH.
1 | nano /etc/ssh/sshd_config |
Добавьте следующую строку в верхней части файла,
1 | ListenAddress 10.1.1.2 |
Ниже приведен пример вывода после внесения изменений в конфигурационный файл.
Перезапустите службу SSH, выполнив следующую команду на терминале.
1 2 3 4 | #Debian/Ubuntu service ssh restart #CentOS service sshd restart |
Разрешение или запрет определенным пользователям или группам входить на SSH-сервер
По умолчанию каждый пользователь может удаленно входить на SSH-сервер. Однако вы можете разрешить или запретить определенным пользователям или группам входить на SSH-сервер.
Откройте терминал и выполните следующую команду с правами root, чтобы открыть файл конфигурации SSH-сервера.
1 | nano /etc/ssh/sshd_config |
Предположим, вы хотите разрешить только пользователю 'user' удаленно входить на SSH-сервер. Никакой другой пользователь не сможет войти на SSH-сервер. Если у вас несколько пользователей, они должны быть разделены пробелом.
Добавьте следующую строку в файл конфигурации SSH-сервера.
1 | AllowUsers user |
Ниже приведен пример конфигурационного файла после добавления этой строки,
Перезапустите службу SSH, выполнив на терминале следующую команду с правами root,
1 2 3 4 | #Debian/Ubuntu service ssh restart #CentOs service sshd restart |
Аналогично, если вы хотите разрешить всем пользователям удаленно подключаться к серверу SSH, но хотите запретить одному или нескольким, добавьте следующие строки в файл конфигурации сервера. Пользователи должны быть разделены командой. Предположим, я хочу запретить только пользователя 'tony', добавьте следующую строку в файл конфигурации сервера.
1 | DenyUsers user |
Перезапустите службу SSH, выполнив следующую команду с правами root на терминале.
1 2 3 4 | #Debian/Ubuntu service ssh restart #CentOs service sshd restart |
Аналогично, вы можете разрешить и запретить группам пользователей входить на SSH-сервер, добавив следующие строки в конфигурационный файл.
1 | AllowGroups <имя группы> |
или
1 | DenyGroups <имя группы> |
Если у вас есть несколько групп, которым нужно разрешить или запретить вход, вы можете разделить их пробелом.
Комбинация разрешений и запретов обрабатывается в следующем порядке.
- DenyUsers
- AllowUsers
- DenyGroups
- AllowGroups
Изменение времени отсрочки входа в систему
По умолчанию у вас есть 2 минуты для входа на удаленный сервер после SSH. Если вы не сможете войти на удаленный сервер в течение 2 минут, SSH отключится. Вот как можно изменить время ожидания входа.
Откройте терминал и выполните следующую команду с правами root, чтобы открыть файл конфигурации сервера.
1 | nano /etc/ssh/sshd_config |
Изменение льготного времени входа в систему SSH
Найдите следующую строку,
1 | #LoginGraceTime 2m |
Замените эту строку на желаемое льготное время, например, 1 минута. Полная строка должна быть такой,
1 | LoginGraceTime 1m |
Ниже приведен пример конфигурационного файла после внесения изменений.
Закройте файл и перезапустите службу SSH, выполнив команду file.
1 2 3 4 | #Debian/Ubuntu service ssh restart #CentOs service sshd restart |
Как установить клиент OpenSSH
Машина Linux, которая собирается получить доступ к удалённой машине или серверу, называется клиентом, и нам нужно установить на неё 'open SSH client'.
Debian
Откройте терминал и выполните следующую команду для обновления репозитория.
1 | apt-get update |
Дождитесь завершения операции.
Как только репозиторий будет обновлен, выполните следующую команду для установки открытого SSH-клиента.
1 | apt-get install openssh-client |
Когда появится запрос на подтверждение, нажмите Y на клавиатуре. Установка может занять несколько минут, поэтому, пожалуйста, наберитесь терпения.
CentOS
1 | yum install openssh-clients |
Когда появится запрос на подтверждение, нажмите Y на клавиатуре. Установка может занять несколько минут, поэтому, пожалуйста, наберитесь терпения.
После того как SSH запущен на клиенте и сервере на удаленной машине, мы можем приступить к удаленному управлению.
Подключение к удаленному серверу Linux с помощью SSH
Чтобы подключиться к удалённой машине, вам нужно знать её IP-адрес, имя пользователя и пароль.
Ниже приведён полный синтаксис команды, если ваш SSH-сервер прослушивает порт 22 по умолчанию.
1 | ssh <user@IP-адрес> |
Вам будет предложено ввести пароль пользователя, введите его с помощью клавиатуры и нажмите Enter.
Предположим, пользователь - user, а IP-адрес удаленной машины - 192.168.1.2. Выполните следующую команду на терминале.
1 | ssh user@192.168.1.2 |
Теперь вы должны быть безопасно подключены.
Однако, если ваш SSH-сервер прослушивает другой порт (например, 2222). Полный синтаксис команды должен быть следующим.
1 | ssh -p <номер порта> пользователь@IP-адрес |
Предположим, пользователь - user, а IP-адрес удаленной машины - 192.168.1.3. Выполните следующую команду на терминале.
1 | ssh -p 2222 user@192.168.1.3 |
Заключение
Итак, это был урок по удаленному управлению сервером Linux с помощью SSH. Надеюсь, вам понравилось.