Как установить и настроить ssh-сервер на debian

Переадресация соединений

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

Важные опции:

LocalForward: Этот параметр используется для определения соединения, которое будет перенаправлять трафик локального порта на удаленную машину, туннелируя его в удаленную сеть. Первым аргументом должен быть локальный порт, на который вы хотите направить трафик, а вторым – адрес и порт, на которые вы хотите направить этот трафик.RemoteForward: Этот параметр используется для определения удаленного порта, на который можно направить трафик (чтобы туннель выходил из локальной машины). Первым аргументом должен быть удаленный порт, по которому трафик будет направляться на удаленную систему. Второй аргумент – адрес и порт, на который нужно направить трафик, когда он прибывает в локальную систему.DynamicForward: Позволяет настроить локальный порт, который может использоваться с протоколом динамической пересылки, таким как SOCKS5. Трафик с использованием протокола динамической пересылки может быть затем направлен на этот порт на локальном компьютере и на удаленной машине (он будет маршрутизироваться в соответствии с включенными значениями).
Эти опции можно использовать для перенаправления портов в обе стороны:

# This will allow us to use port 8080 on the local machine# in order to access example.com at port 80 from the remote machineHost local_to_remoteLocalForward 8080 example.com:80# This will allow us to offer access to internal.com at port 443# to the remote machine through port 7777 on the other sideHost remote_to_localRemoteForward 7777 internal.com:443

Опции для клиентской стороны

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

Некоторые из них могут быть необходимы при наличии определенных настроек конфигурации на удаленном хосте.

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

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

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

Как уже отмечалось ранее, если функция X11 forwarding активирована на обоих компьютерах, вы можете получить доступ к данному функционалу, воспользовавшись следующей командой:

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

Fail2ban для защиты SSH сервера

Самым действенным способом защиты SSH является защита от перебора паролей. Её может обеспечить утилита .

apt update
apt install iptables -y && apt install fail2ban -y

Настройка Fail2ban

Удаляем дефолтный файл настроек fail2ban для Debian

cat /dev/null >/etc/fail2ban/jail.d/defaults-debian.conf

Затем, запускаем создание собственного файла настроек

nano /etc/fail2ban/jail.d/sshd.conf

Открывается редактор, туда вписываем следующее: — меняете на свой IP (или диапазон, если IP динамический). Чтобы добавить несколько IP или диапазонов, указываем их через пробел.

enabled   = true
port      = 9724
filter    = sshd
ignoreip  = 127.0.0.1/8
logpath   = /var/log/auth.log
findtime  = 300 
maxretry  = 3
bantime   = 3600
  • — по какому порту банить IP, попавший на . Если на сервере нестандартный порт SSH, укажите его здесь
  • — белый список IP, меняем на свои значения
  • — время, в течение которого можно ошибиться не более раз
  • — максимальное число попыток авторизоваться по SSH в течение
  • — время бана

Ещё можно добавить нижеследующий код в дополнение к вышеуказанному, он поможет от активного брутфорса пароля SSH ботнетами:

enabled   = true
filter    = sshd
logpath   = %(sshd_log)s
banaction = iptables-allports
findtime  = 1d
maxretry  = 21
bantime   = 1w

banaction — как банить. Чтобы банить по всем портам, указываем iptables-allports, в таком случае, указывать port не обязательно

После внесения изменений нужно перезагрузить

Как проверить fail2ban

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

fail2ban-client status sshd

Если всё верно сделано, увидите надпись:

Status for the jail: sshd

Если что-то не так, то:

fail2ban                : ERROR   NOK: ('ssh',)
Sorry but the jail 'ssh' does not exist

В таком случае, вернитесь выше и перепроверьте шаги настроек

Как сбросить бан fail2ban

Сбрасывает все баны всех IP всех служб:

fail2ban-client unban --all

Если нужно сбросить конкретную службу, например , и конкретный IP :

fail2ban-client set sshd unbanip 1.2.3.4

или все IP:

fail2ban-client set sshd unbanip --all

Как сменить порт доступа к SSH

Обратите внимание

Если на вашем сервере установлен firewall, он может блокировать соединения. Перед изменениями разрешите доступ по новому порту в firewall.. Для смены порта доступа к SSH-серверу:

Для смены порта доступа к SSH-серверу:

  1. 1.

    .

  2. 2.

    Откройте на редактирование файл «/etc/ssh/sshd_config» при помощи редактора «vim», выполнив команду:

  3. 3.

    Найдите пункт , на клавиатуре нажмите клавишу «Insert» и удалите знак решетки «#». Замените цифру 22 на любой свободный порт. Назначение портов возможно в диапазоне от 1 до 65534. Рекомендуем выбрать малоиспользуемый диапазон портов 2000-7000:

    После этого нажмите Escape, а затем Shift + . Введите «wq» и нажмите «Enter».

  1. 4.

    Перезапустите SSH-сервер при помощи команды:

Готово, после перезагрузки сервера подключение по SSH будет происходить по новому порту. Пример подключения через PuTTy:

Remote Forwarding

In OpenSSH, remote SSH port forwardings are specified using the option. For example:

This allows anyone on the remote server to connect to TCP port 8080 on the remote server. The connection will then be tunneled back to the client host, and the client then makes a TCP connection to port 80 on . Any other host name or IP address could be used instead of to specify the host to connect to.

This particular example would be useful for giving someone on the outside access to an internal web server. Or exposing an internal web application to the public Internet. This could be done by an employee working from home, or by an attacker.

By default, OpenSSH only allows connecting to remote forwarded ports from the server host. However, the option in the server configuration file sshd_config can be used to control this. The following alternatives are possible:

This prevents connecting to forwarded ports from outside the server computer.

This allows anyone to connect to the forwarded ports. If the server is on the public Internet, anyone on the Internet can connect to the port.

This means that the client can specify an IP address from which connections to the port are allowed. The syntax for this is:

In this example, only connections from the IP address to port 8080 are allowed.

OpenSSH also allows the forwarded remote port to specified as 0. In this case, the server will dynamically allocate a port and report it to the client. When used with the option, the client will print the allocated port number to standard output.

Use Cases

SSH Tunneling can be used to add encryption to traffic that otherwise would not be encrypted. If your business had an old legacy application that used telnet to communicate information back to a server, you could secure that connection with an SSH tunnel.

It can also be used for testing applications without opening their ports to the rest of the network. For example, if you were building a web-based application, you could leave port 80 and 443 closed to the outside on your host firewall and use an SSH tunnel to connect to the web server from your workstation to test its functionality.

Employees often use it for back doors into their companies internal network. Most of the time for innocent reasons like convenience and allowing themselves access from home.

Often SSH tunneling is used for nefarious reasons. Malware and crackers use it to open access to the internal network of their targets from the internet or to mask data transmissions out to the internet.

Версии SSH-протокола

В настоящий момент известны две рабочие версии протокола SSH:

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

    Так, например, в культовом фильме «Матрица: Перезагрузка» показана вполне достоверная с технической точки зрения сцена, в которой Тринити взламывает электростанцию. С помощью программы Nmap она находит открытый порт SSH (22 — порт, на котором по умолчанию работает серверная часть SSH), затем запускает эксплойт SSHNuke. Через уязвимость первой версии протокола SSHv1 CRC32 она получает права суперпользователя (root), меняет пароль на свой и отключает электростанцию.

  2. SSHv2. Запущена спустя год после первой версии и является современной модификацией сетевого протокола, устойчивой к агрессивным атакам «man-in-the-middle», благодаря которой злоумышленники не смогут «прослушивать» трафик пользователя.

    Еще один уровень защиты второй версии — максимальная степень устойчивости к несанкционированному доступу путем «серединного» подсоединения (например, session hijacking), а также к приему подмены серверных имен (DNS spoofing).

Из вышеизложенного можно сделать вывод, что использование сетевого протокола SSH-2 является единственно приемлемым с точки зрения безопасности и сохранности конфиденциальной информации.

Определить IP-адрес

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

  • Запустите команду терминала
  • Проверить роутер

Чтобы отобразить IP-адрес удаленной системы, войдите в систему и запустите

ip address

Это вернет IP-адрес устройства, поэтому запишите его. В более старых версиях Linux могут быть лучшие результаты.

Вы также можете проверить свой маршрутизатор, чтобы увидеть подключенные устройства. ПК или сервер Linux будут перечислены, как правило, по имени операционной системы или устройства. Это должно упростить идентификацию.

Чтобы отобразить общедоступный IP-адрес, войдите на сервер и откройте whatsmyip.org.

Используемый IP-адрес должен быть подходящим для подключения. Итак, если устройство находится в той же сети, что и клиент, используйте локальный IP-адрес. Для подключений через Интернет используйте общедоступный IP-адрес. Если компьютер находится в другой сети, убедитесь, что порт 22 перенаправлен на компьютер.

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

Установить SSH на Ubuntu будет очень просто, программа считается стандартной и используется почти везде. Хотя по умолчанию в дистрибутиве её нет, но зато она есть в официальных репозиториях.

Поэтому для установки откройте терминал с помощью сочетания клавиш Ctrl+Alt+T и выполните команду:

Будет загружено несколько пакетов, а когда установка ssh сервера Ubuntu завершится, программа будет готова к работе. Если вы хотите чтобы служба запускалась автоматически нужно добавить его в автозагрузку. Поэтому чтобы включить SSH в Ubuntu 20.04 выполните:

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

Что касается клиента ssh, то он уже установлен в системе по умолчанию. Сейчас вы можете попробовать подключиться к локальному ssh серверу просто набрав:

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

Точно таким способом вы можете получить ssh доступ ubuntu к любому другому компьютеру из сети. Для этого достаточно указать вместо localhost его ip адрес и имя пользователя в таком формате:

$ ssh имя_пользователя@ip_адрес

Установка на стороне клиента

Установить и настроить SSH на клиенте просто. В некоторых случаях вам даже не нужно никакого дополнительного программного обеспечения:

  • Пользователи Linux должны найти SSH-клиента, интегрированного в терминал
  • На компьютерах MacOS также предварительно установлен SSH в терминале
  • ПК с Windows нужно будет использовать инструмент командной строки PowerShell или установить PuTTY
  • Чтобы подключиться к Linux по SSH с iPhone и iPad, попробуйте iTerminal ($ 4.99)
  • Если вы используете Android для SSH, попробуйте JuiceSSH (бесплатно)

SSH не установлен в вашей системе Linux? Добавьте, обновив пакеты и обновив, затем установив:

Вы привыкли использовать SSH в Windows, но переключились на рабочий стол Linux? Вы можете пропустить настольное приложение PuTTY SSH с его простым интерфейсом мыши. К счастью, его можно установить на рабочий стол Linux:

С установленным программным обеспечением клиента SSH вы готовы установить соединение с удаленным компьютером или сервером.

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

Определение ключей

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

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

SSH provides strong encryption and integrity protection

Once a connection has been established between the SSH client and server, the data that is transmitted is encrypted according to the parameters negotiated in the setup. During the negotiation the client and server agree on the symmetric encryption algorithm to be used and generate the encryption key that will be used. The traffic between the communicating parties is protected with industry standard strong encryption algorithms (such as AES (Advanced Encryption Standard)), and the SSH protocol also includes a mechanism that ensures the integrity of the transmitted data by using standard hash algorithms (such as SHA-2 (Standard Hashing Algorithm)).

Настроить SSH-туннелирование в Windows

  1. Запустите Putty и введите IP-адрес SSH-сервера в поле .

  2. В меню « разверните и выберите « . Установите переключатель для настройки локального, для удаленного и для динамической переадресации портов.

    • При настройке локальной переадресации введите локальный порт пересылки в поле « а в поле « введите хост и IP-адрес назначения, например .
    • Для перенаправления удаленного порта введите порт перенаправления удаленного SSH-сервера в поле а в поле введите целевой хост и IP-адрес, например .
    • При настройке динамической пересылки введите только локальный порт SOCKS в поле .
  3. Нажмите кнопку « , как показано на изображении ниже.

  4. Вернитесь на страницу чтобы сохранить настройки, чтобы не вводить их каждый раз. Введите имя сеанса в поле « и нажмите кнопку « .

  5. Выберите сохраненный сеанс и войдите на удаленный сервер, нажав кнопку « .

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

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

Установка и настройка на стороне сервера

Перед установкой соединения установите программное обеспечение на стороне сервера для размещения вашего SSH-соединения. Для этого требуется, чтобы кто-то присутствовал для установки или включения SSH. Возможно, вы уже присутствуете для этого — в противном случае ваш коллега или инженер службы поддержки на стороне сервера настроит SSH.

Обратите внимание, что если вы используете пакет веб-хостинга, SSH должен быть включен по умолчанию. Если нет, обратитесь к своему веб-хосту, чтобы настроить SSH

Если SSH не включен на удаленном компьютере или сервере, установите его с помощью

sudo apt install openssh-server

Убедитесь, что это работало с

sudo systemctl status ssh

Команда должна запрещать ответ «активен».

В некоторых случаях брандмауэр Ubuntu ufw может блокировать SSH. Чтобы этого не произошло, используйте

sudo ufw allow ssh

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

sudo systemctl enable ssh

Доступны и другие параметры ( , и ) для настройки службы SSH.

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

Все настройки сервера SSH находятся в файле /etc/ssh/sshd_config. Перед тем, как его редактировать лучше сделать резервную копию на всякий случай:

1. Смена порта

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

Затем пропишите нужное значение порта, например 2222:

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

Теперь, чтобы подключится к этому серверу надо будет явно указать порт с помощью опции -p:

2. Отключение входа суперпользователя

Чаще всего боты используют для перебора пароля логин суперпользователя. Авторизацию для этого пользователя можно отключить. Перед тем, как это делать убедитесь, что у вас есть в системе ещё как минимум один пользователь от имени которого вы сможете авторизоваться. Затем найдите строку PermitRootLogin и замените её значение на no:

Чтобы разрешить подключение ssh Debian для пользователя root, замените значение этого параметра на yes.

3. Авторизация по ключу

Следующий шаг по обеспечению безопасности вашего сервера — отключить вообще авторизацию по паролю, а использовать только авторизацию по ключу. Подробнее про авторизацию по ключу рассказано здесь. В конфигурационном файле sshd вам надо изменить только несколько строчек:

Сначала найдите строку PubkeyAuthentication и замените её значение на yes:

Перед тем как отключать возможность входа по паролю убедитесь, что вы добавили ключ для авторизации, как это описано в статье выше. Затем замените значения параметров ChallengeResponseAuthentication, PasswordAuthentication, UsePAM на no.

The story of getting SSH port 22

I wrote the initial version of SSH (Secure Shell) in Spring 1995. It was a time when telnet and FTP were widely used.

Anyway, I designed SSH to replace both (port 23) and (port 21). Port 22 was free. It was conveniently between the ports for and . I figured having that port number might be one of those small things that would give some aura of credibility. But how could I get that port number? I had never allocated one, but I knew somebody who had allocated a port.

The basic process for port allocation was fairly simple at that time. Internet was smaller and we were in the very early stages of the Internet boom. Port numbers were allocated by IANA (Internet Assigned Numbers Authority). At the time, that meant an esteemed Internet pioneer called Jon Postel and Joyce K. Reynolds. Among other things, Jon had been the editor of such minor protocol standards as IP (RFC 791), ICMP (RFC 792), and TCP (RFC 793). Some of you may have heard of them.

To me Jon felt outright scary, having authored all the main Internet RFCs!

There we were! SSH port was 22!!!

On July 12, 1995, at 2:32am, I announced a final beta version to my beta testers at Helsinki University of Technology. At 5:23pm I announced ssh-1.0.0 packages to my beta testers. At 5:51pm on July 12, 1995, I sent an announcement about SSH (Secure Shell) to the mailing list. I also posted it to a few newsgroups, mailing lists, and directly to selected people who had discussed related topics on the Internet.

Как подключиться по SSH

Для подключения по SSH нам необходимо знать такие данные:

  • ip адрес сервера, к которому мы собираемся подключится;
  • порт, на котором ожидает подключения SSH сервер, по умолчанию используется 22, но в целях безопасности порт подключения ssh часто изменяют;
  • имя и пароль пользователя на удаленном сервере.

Больше ничего не нужно, обычно эти данные присылают в письме вместе с описанием VPS. Теперь перейдем к практике.

1. Подключение через SSH в Linux

В Linux подключение по SSH выполняется с помощью утилиты ssh. Мы более подробно рассматривали работу с ней в статье как пользоваться ssh. Для подключения к удаленному компьютеру ее синтаксис будет выглядеть следующим образом:

$ ssh имя_пользователя@айпи_адрес

Это самый простой вариант, если вам также нужно задать порт, используйте опцию -p:

$ ssh имя_пользователя@айпи_адрес -p порт

Чтобы выполнить подключение по SSH Linux нажмите Ctrl+Alt+T для открытия терминала и наберите команду, заменив нужные значения:

Или, с нестандартным портом:

Если ip_адрес и порт правильные, то на следующем шаге программа попросит у вас ввести пароль:

Если пытаетесь подключится через SSH к этому серверу первый раз, то утилита также попросит подтвердить добавление нового устройства в свой список известных устройств, здесь нужно набрать yes и нажать Enter:

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

Если же произошла ошибка и IP адрес или порт введены неверно, то вы получите ошибку Connection Refused:

Просто убедитесь что порт введен верно. Если это ваш сервер, то, возможно на нем еще нужно разрешить подключение SSH в брандмауэре. В Ubuntu/Debian для этого на удаленном сервере выполните:

А в CentOS/Fedora:

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

Теперь вы знаете как подключиться по ssh linux и решить проблемы с подключением. А теперь перейдем к Windows.

2. Подключение через SSH в Windows

Раньше подключение по SSH из Windows выполнялось только с помощью сторонних утилит, например PuTTY. Но в Windows 10 был добавлен встроенный OpenSSH клиент и работает он точно так же, как и в Linux. По умолчанию этот компонент не активирован. Для его установки откройте Параметры -> Приложения:

Затем выберите Управление дополнительными компонентами:

Здесь нажмите добавить новый компонент и в открывлемся меню выберите OpenSSH Client и нажмите Устанвоить:

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

После перезагрузки нажмите Win+R чтобы открыть окно запуска команд и наберите в нем cmd:

Далее нажмите Enter. Перед вами откроется командная строка Windows. Здесь можно использовать утилиту ssh. Синтаксис у нее абсолютно такой же, как и для Linux:

ssh имя_пользователя@айпи_адрес -p порт

Например, такой командой можно подключится по SSH к Raspberry Pi, который находится в вашей локальной сети по адресу 192.168.1.5:

Утилита предложит добавить устройство в список известных:

Затем предложит ввести пароль:

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

Теперь подключиться к серверу по ssh из этой операционной системы также просто как и из Linux.

Удаленное перенаправление портов SSH

Удаленная переадресация портов позволяет вам подключиться с удаленного компьютера к локальному компьютеру. По умолчанию SSH не разрешает удаленное перенаправление портов. Вы можете включить это с помощью директивы GatewayPorts в главном файле конфигурации SSHD: /etc/ssh/sshd_config на удаленном хосте.

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

$ sudo vim/etc/ssh/sshd_config

Найдите требуемую директиву, раскомментируйте ее и установите ее значение , как показано на скриншоте.

GatewayPorts yes

Включение удаленного перенаправления портов SSH

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

$ sudo systemctl restart sshd
OR
$ sudo service sshd restart

Затем запустите следующую команду для перенаправления порта 5000 на удаленном компьютере на порт 3000 на локальном компьютере.

$ ssh -f -N admin@server1.example.com -R 5000:localhost:3000

Как только вы поймете этот метод туннелирования, вы можете легко и безопасно выявить локальный сервер разработки, особенно за NAT и брандмауэрами в Интернете по защищенным туннелям. Аналогичным образом работают туннели, такие как Ngrok, pagekite, localtunnel и многие другие.

History of the SSH protocol

The Secure Shell protocol was originally developed by Tatu Ylonen in 1995 in response to a hacking incident in the Finnish university network. A password sniffer had been installed on a server connected directly to the backbone, and when it was discovered, it had thousands of usernames and passwords in its database, including several from Ylonen’s company.

That incident triggered Ylonen to study cryptography and develop a solution he could use himself for remote login over the Internet safely. His friends proposed additional features, and three months later, in July 1995, Ylonen published the first version as open source. It became OpenSSH. Later he took the protocol for standardization at the IETF and designed the SSH File Transfer Protocol (SFTP). He founded SSH Communications Security Corp in December 1995 to provide commercial support for the protocol.

Ylonen still works on topics related to Secure Shell, particularly around key management, as well as broader cybersecurity topics.

Today, the protocol is used for managing more than half of world’s web servers and practically every Unix or Linux computer, on-premise and in the cloud. Information security specialists and system administrators use it to configure, manage, maintain, and operate most firewalls, routers, switches, and servers in the millions of mission-critical networks and environments of our digital world. It is also embedded inside many file transfer and systems management solutions.

The new protocol replaced several legacy tools and protocols, including telnet, ftp, FTP/S, rlogin, rsh, and rcp.

Мультиплексирование SSH через одно TCP-соединение

SSH имеет возможность использовать одно TCP-соединение для нескольких SSH-соединений с одним и тем же хост-компьютером. Это может быть полезно, если для установления рукопожатия TCP с удаленной машиной требуется некоторое время (служебные данные будут удалены из дополнительных SSH-соединений).

Для этого можно использовать опции:

ControlMaster: Этот параметр определяет, включать ли мультиплексирование, когда это возможно. Как правило, если вы хотите использовать эту опцию, вы должны установить здесь auto в разделе хостов, которые медленно подключаются, или в общем разделе Host *.ControlPath: Эта опция определяет файл сокета, который используется для управления соединениями. Она должна указывать место в файловой системе. Как правило, она позволяет легко маркировать сокеты по хостам. Чтобы назвать сокет на основе имени пользователя, удаленного хоста и порта, вы можете использовать /path/to/socket/%r@%h:%p.ControlPersist: Эта опция устанавливает время в секундах, в течение которого соединение TCP должно оставаться открытым после закрытия последнего соединения SSH. Установив здесь большое значение, вы сможете открывать новые соединения после закрытия первого, но чаще здесь устанавливается значение 1 (чтобы не открывать неиспользуемое TCP-соединение).
Для настройки такого поведения можно использовать этот раздел:

Host *ControlMaster autoControlPath ~/.ssh/multiplex/%r@%h:%pControlPersist 1

Убедитесь, что каталог был создан.

mkdir -p ~/.ssh/multiplex

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

Перенаправление локального порта

Перенаправление локального порта позволяет вам перенаправить порт на локальном (ssh-клиент) компьютере на порт на удаленном (ssh-сервере), который затем перенаправляется на порт на конечном компьютере.

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

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

В Linux, macOS и других системах Unix, чтобы создать переадресацию локального порта, передайте параметр клиенту :

Используются следующие параметры:

  • — IP-адрес и номер порта локального компьютера. Если опущен, клиент ssh привязывается к локальному хосту.
  • — IP или имя хоста и порт конечного компьютера.
  • — удаленный пользователь SSH и IP-адрес сервера.

В качестве можно использовать любой порт с номером больше . Порты с номерами меньше являются привилегированными и могут использоваться только пользователем root. Если ваш SSH-сервер прослушивает порт, отличный от 22 (по умолчанию), используйте параметр .

Имя хоста назначения должно разрешаться с сервера SSH.

Допустим, у вас есть сервер базы данных MySQL, работающий на машине во внутренней (частной) сети, на порте 3306, который доступен с машины , и вы хотите подключиться к базе данных с помощью клиента MySQL на локальном компьютере. сервер. Для этого вы можете перенаправить соединение, используя следующую команду:

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

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

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

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

Когда целевой хост совпадает с SSH-сервером, вместо указания IP-адреса или имени хоста назначения вы можете использовать .

Допустим, вам нужно подключиться к удаленному компьютеру через VNC, который работает на том же сервере и недоступен извне. Вы бы использовали следующую команду:

Параметр указывает команде работать в фоновом режиме, а не выполнять удаленную команду. Мы используем потому что VNC и SSH-сервер работают на одном хосте.

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

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

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

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

Дальше вы можете перейти к настройке конфигурационного файла:

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

По умолчанию вход от имени суперпользователя включен, рекомендуется отключить такую возможность. Для этого найдите строчку PermitRootLogin и замените ее значение на no:

Чтобы разрешить аутентификацию по ключу, а не по паролю найдите строку PubkeyAuthentication и убедитесь, что ее значение yes.

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

Более подробно про настройку и использование различных тонкостей ssh рассказано в статье как использовать ssh.

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

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

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

Настройка ssh Ubuntu 20.04 полностью завершена.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector