7
сентябрь
2021
15:13

Настройка сервера SSHD и клиента SSH в Linux

7 сентябрь 2021 15:13

Иногда требуется подключиться по протоколу SSH к домашнему или рабочему ПК для его настройки.

План установки

  1. Установить SSHD на рабочий сервер Ubuntu Linux.
  2. Настроить SSHD на сервере. Вместо порта 22 TCP по умолчанию для службы SSH в данном примере будем использовать порт 22334.
  3. SSHD сервер должен быть запущен и работать постоянно. Разрешить запуск службы SSHD.
  4. Должен быть настроен локальный брандмауэр UFW: разрешить доступ извне к порту 22334/TCP.
  5. Если планируется подключение из Интернет, должен быть выполнен "проброс" из WAN порта роутера порт 22334 на IP адрес компьютера в локальной сети.
  6. Установить SSH на клиент MX Linux (Debian 11 "Buster" или Debian 12 "Bookworm")
  7. Подключиться по SSH с клиента к серверу.

В конце статьи я коснулся X11-forwarding.

Шаг 1. Установка SSHD на сервер

Установка SSHD в Ubuntu Linux - в параметрах команды apt-get указывается имя мета пакета ssh:

sudo apt-get install ssh

Данная команда установит пакеты openssh-client и openssh-server одновременно.

Шаг 2. Настройка SSHD сервера

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

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.COPY

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

Исправил его с помощью редактора "nano":

sudo nano /etc/ssh/sshd_config

Мой конфигурационный файл sshd_config привожу ниже (его можно скопировать и вставить):

cat /etc/ssh/sshd_config | grep \# -v

Include /etc/ssh/sshd_config.d/*.conf
Port 22334
AddressFamily inet
ListenAddress 0.0.0.0
PermitRootLogin no
MaxAuthTries 6
MaxSessions 1
PasswordAuthentication yes
PermitEmptyPasswords no
ChallengeResponseAuthentication no
UsePAM yes
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server

Шаг 3. Настройка запуска службы SSHD на сервере Ununtu

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

Разрешение постоянного запуска службы SSHD при загрузке операционной системы - по имени сервиса ssh.service:

sudo systemctl enable ssh

Перезапуск демона sshd для применения изменений в файле конфигурации на сервере (главном ПК).

sudo systemctl restart ssh

Имя службы одно - ssh. Название sshd - псевдоним (алиас). Если обратиться к службе ssh по имени sudo systemctl enable sshd.service - команда не сработает (ошибка "Failed to restart sshd.service: Unit sshd.service not found."). Потому что основная служба называется ssh.service, а её псевдоним - sshd.service. Вывод: для управления службой sshd используется имя службы ssh. Команды sudo systemctl restart ssh и sudo systemctl restart sshd делают одно и то же, но первая предпочтительней.

Шаг 4. Настройка локального брандмауэра UFW

Запустить и разрешить запуск ufw после перезагрузки, одной командой.

sudo systemctl enable --now ufw

Проверка:

sudo systemctl status ufw

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

sudo ufw allow 22334

Просмотр правил брандмауэра ufw:

sudo ufw show added

Шаг 5. Проброс портов

Поскольку я тестировал задачу внутри локальной сети, этот пункт пропускаю. Каждый может настроить проброс "секретного" порта SSH на Интернет роутере самостоятельно. Если будет использоваться VPN тоннель, проброс портов, что очевидно, выполнять не нужно.

Шаг 6. Установка ssh на нетбук под управлением MX Linux (Debian)

В Debian команда установки ssh несколько другая, чем в Ubuntu:

sudo apt-get install ssh

Шаг 7. Подключение к серверу SSH от клиента

Если сервер имеет статический "белый" IP-адрес, подключение к нему с клиента выполняется командой

ssh user@123.45.67.8 -p 22334

где user - логин пользователя, который должен существовать на сервере,
123.45.67.8 - IP адрес сервера,
22334 - порт SSH.

При первом подключении будет сообщение о доверии к серверу, ответил с клавиатуры "yes".
Затем нужно ввести пароль к учётной записи user, и вы попадёте в консоль (терминальную сессию) сервера.

Если на сервере изменился ключ / сертификат сервера (например, на переустановили ОС), то будет сообщение "WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED" и подключение не произойдет. Если вы уверены, что с машиной всё в порядке, просто произведена переустановка сервера, выполните на клиенте удаление старого отпечатка сертификата сервера (fingerprint), командой, которая будет написана в сообщении, например: ssh-keygen -f "/home/user/.ssh/known_hosts" -R "\[123.45.67.8\]:22334.

Итог

Настройка завершена. Вход на удалённый сервер по протоколу SSH выполнен.

Дальнейшие действия

Если планируется часто подключаться к серверу с одной и той же машины, можно вместо парольной защиты настроить подключение к серверу SSH по сертификатам, сгенерированным программой "ssh-keygen", о чём рассказано в статье itproffi.ru.

Решение проблемы с X11 Forwarding

(Дополнение от 15.11.2023).
После выполнения пунктов инструкции заработал доступ к серверу в текстовом режиме ssh, но из терминала клиента не получилось работать в режиме X11 forwarding (ssh -X ...) и далее при выполнении графических приложений сервера на клиенте, например, при запуске из ssh-сессии xclock возникала ошибка "connect localhost port 6000: Connection refused. Error: Can't open display: localhost:10.0". Эта проблема в терминале клиента не решается никаким образом. У меня получилось так:

На клиенте:

sudo apt install putty

Затем -
Пуск - Интернет - Putty SSH Client

  • "Configuraion" - Connection - SSH - Enable compression**
  • "Configuraion" - Connection - SSH - X11 - Enable X11 forwarding**
  • "Configuraion" - "Session"** - ввел IP адрес и порт сервера
  • "Configuraion" - "Session" - Saved sessions - My - Save**
  • выбрал My
  • нажал "Open"
  • ввел имя пользователя и пароль
  • попал в сессию сервера
  • проверка: echo $DISPLAY должна выводить localhost:10.0. (Если это не так, выполнить export DISPLAY=:10.0)
  • xclock или `
  • xclock запустился на экране клиента (выполняется на сервере)! Ура!
  • sudo apt install xsysinfo
  • xsysinfo - информация о загрузке ядра сервера в реальном времени.

Ссылки:



Похожие публикации