Как открыть 22 порт на Убунту?
Добрый день,
Не судите строго за вопрос, нет большого опыта с Убунту.
Дано — после обновления Убунту до версии 20.04.1 c 16, а изначально с 14, не могу подключиться к серверу через 22 порт, до обновления все работало исправно. Подключился через веб консоль, что огранивает читаемость некоторых команд. Проверяю через
Код sudo iptables — L выдает гору нечитаемой информации, в которой даже не могу найти 22 порт.
Через sudo ufw allow ssh открыть не удалось, хотя sudo ufw status показывает ALLOW from Anywhere.
Через sudo iptables -A INPUT -p tcp —dport 22 -j ACCEPT тоже открыть не удалось, ping.eu показывает, что 22 порт закрыт, и никак не получается его открыть. При подключении к серверу — Соединение прервано.
sudo nmap localhost показывает, что открыт только 80 и 443 порты.
Кто-то может дать совет, что делать?
- Вопрос задан более трёх лет назад
- 12283 просмотра
5 комментариев
Простой 5 комментариев
Как открыть ssh-порт 22 в Ubuntu 22.04 Jammy Jellyfish Linux
Протокол SSH по умолчанию работает на порту 22. Чтобы принимать входящие соединения на вашем SSH-сервере, вам необходимо убедиться, что порт 22 разрешен через брандмауэр.
В этом уроке вы узнаете, как открыть порт 22 SSH в Ubuntu 22.04 Jammy Jellyfish. Единственным обязательным условием является то, что у вас уже должен быть установлен SSH. Если вы еще не установили его, ознакомьтесь с нашим руководством по установке SSH-сервера в Ubuntu 22.04.
В этом уроке вы узнаете:
- Как открыть ssh порт 22
- Как удалить правило брандмауэра порта SSH

Откройте ssh-порт 22 в Ubuntu 22.04 Jammy Jellyfish Linux, пошаговые инструкции
- Начните с открытия терминала командной строки и ввода следующей команды, чтобы проверить состояние вашего брандмауэра. Ubuntu по умолчанию использует ufw (несложный брандмауэр), и он уже должен быть установлен.
$ sudo ufw status verbose Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip
$ sudo ufw allow ssh
В качестве альтернативы можно разрешить подключение через SSH-порт 22 только определенному IP-адресу или подсети. В приведенном ниже примере IP-адрес 192.168.1.2 будет разрешен для подключения через порт 22:
$ sudo ufw allow from 192.168.1.2 to any port ssh
В этом примере, чтобы разрешить выполнение всей подсети 192.168.0.0/16 :
$ sudo ufw allow from 192.168.0.0/16 to any port ssh
$ sudo ufw status verbose Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip To Action From -- ------ ---- 22/tcp ALLOW IN Anywhere 22/tcp (v6) ALLOW IN Anywhere (v6)
$ sudo ufw delete allow ssh $ sudo ufw delete allow from 192.168.1.2 to any port ssh $ sudo ufw delete allow from 192.168.0.0/16 to any port ssh
Заключительные мысли
В этом уроке вы узнали, как открыть порт 22 SSH в Ubuntu 22.04 Jammy Jellyfish Linux. Вы также увидели, как разрешить определенные IP-адреса или сети, не разрешая входящий SSH-трафик с любого хоста. Наконец, вы узнали, как удалить добавленные ранее правила брандмауэра на случай, если в будущем вам понадобится снова изменить настройки.
Все права защищены. © Linux-Console.net • 2019-2023
Гайд Как открыть порт в Linux? Очень просто!
Статья рассчитана на новичков, использующих Linux.
Многие новички сталкиваются с проблемой после создания игрового сервера на личном выделенном сервере или vds, используя Linux.
Сервер запускается, но порт закрыт, я не могу к нему подключиться. Что же делать?
Нужно прописать правила Firewall’а, что бы нужный порт был открыт.
Для начала немного теории. Сервера по Counter-Strike, абсолютно всех версий, используют 2 протокола, TCP и UDP.
Значит нужно 2 правила для Iptables, что бы открыть порт.
Вопрос: Что такое Iptables?
Ответ: Iptables это самый распространенный и используемый Linux Firewall, для защиты, фильтрации, проброса портов, и многого другого. Подробнее можете почитать в wikipedia.
Допустим, у вас Counter-Strike 1.6 сервер, и вы хотите открыть порт 27015. Для этого пропишите в терминал 2 правила.
iptables -A INPUT -p tcp --dport 27015 -j ACCEPT iptables -A INPUT -p udp --dport 27015 -j ACCEPT
Первое правило для открытия протокола TCP на порте 27015, а второе правило для открытия протокола UDP на порте 27015.
Другой небольшой пример:
Стандартный порт ssh в Linux находится на 22’ом порте, но использует только протокол TCP. Как же открыть стандартный порт ssh?
Что бы его открыть, нужно прописать очень простое правило Iptables, но для порта 22 только на протоколе TCP. Открывать порт на протоколе UDP в данной ситуации не нужно.
Введите в терминал данное правило Iptables:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Дополнительно:
Как открыть нужные порты в Linux для сервера по игре RUST?
Типичный вопрос пользователя: Столкнулся с проблемой! Запустил сервер по игре RUST, но не могу к нему подключиться, сервер вообще не виден. Помогите!
Ответ: Сервер по игре RUST использует сразу 2 игровых порта. Первый порт служит для подключения клиента к серверу, второй служит для rcon администрирования.
Стандартный порт по игре RUST 28015 использующий протоколы TCP и UDP, второй порт для администрирования 28016 использует только протокол TCP.
Для того, что бы открыть нужный порт по игре RUST, введите в терминал следующие правила:
Для основного порта сервера:
iptables -A INPUT -p tcp --dport 28015 -j ACCEPT iptables -A INPUT -p udp --dport 28015 -j ACCEPT
Как открывать порты в системе Linux
Порт — это конечная точка соединения. В операционной системе порт открывается или закрывается для передачи пакетов данных определенных процессов или сетевых служб.
Обычно порты определяют конкретную присвоенную им сетевую службу. Это можно изменить вручную, настроив службу на использование другого порта, но в целом можно оставить значения по умолчанию.
Первые 1024 порта (номера портов от 0 до 1023) называются общеизвестными или системными и зарезервированы для часто используемых служб. К ним относятся SSH (порт 22), HTTP (порт 80), HTTPS (порт 443) и тому подобное.
Номера портов выше 1024 называются эфемерными портами.
- Порты с номерами от 1024 до 49151 называются зарегистрированными/пользовательскими.
- Номера портов с 49152 по 65535 называются динамическими/частными портами.
В этом мануале мы откроем эфемерный порт в Linux, поскольку общие службы используют известные порты.
Требования
Для выполнения туториала нужно уметь пользоваться терминалом.
Проверка открытых портов
Прежде чем открыть порт в Linux, нужно проверить список всех открытых портов и выбрать эфемерный порт, которого нет в этом списке.
С помощью команды netstat можно получить список всех открытых портов, включая TCP и UDP — это распространенные протоколы для передачи пакетов на сетевом уровне.
Учитывая используемые флаги, команда выводит следующее:
- все прослушиваемые сокеты (-l)
- номер порта (-n)
- TCP-порты (-t)
- UDP-порты (-u)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp6 0 0 ::1:5432 . * LISTEN tcp6 0 0 ::1:6379 . * LISTEN tcp6 0 0 . 22 . * LISTEN udp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN
Примечание. Если в вашем дистрибутиве нет netstat, то с помощью команды ss можно вывести список открытых портов путем проверки сокетов прослушивания.
Убедитесь, что команда ss выводит согласованные выходные данные:
Получим следующий вывод:
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port udp UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:* tcp LISTEN 0 128 127.0.0.1:5432 0.0.0.0:* tcp LISTEN 0 128 127.0.0.1:27017 0.0.0.0:* tcp LISTEN 0 128 127.0.0.1:6379 0.0.0.0:* tcp LISTEN 0 128 127.0.0.53%lo:53 0.0.0.0:* tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* tcp LISTEN 0 128 [::1]:5432 0.0.0.0:* tcp LISTEN 0 128 [::1]:6379 0.0.0.0:* tcp LISTEN 0 128 [::]:22 0.0.0.0:*
Эта команда выводит практически те же открытые порты, что и netstat.
Открытие порта для TCP-соединений
Теперь откроем закрытый порт и настроим его на прослушивание TCP-соединений.
В этом туториале мы откроем порт 4000. Но при желании вы можете выбрать другой закрытый порт. Только убедитесь, что его номер больше 1023.
С помощью команды netstat убедитесь, что порт 4000 не используется:
netstat -na | grep :4000
То же самое можно сделать с помощью команды ss:
ss -na | grep :4000
Вывод должен быть пустым, таким образом подтверждается, что порт сейчас не используется, чтобы была возможность вручную добавить правила порта в системный брандмауэр iptables.
Ubuntu и системы на базе ufw
ufw — клиент командной строки для брандмауэра UncomplicatedFirewall.
Команда будет выглядеть следующим образом:
sudo ufw allow 4000
CentOS и системы на базе firewalld
firewall-cmd — клиент командной строки для брандмауэра firewalld.
Команды будут выглядеть так:
Для других дистрибутивов Linux
Изменить системные правила фильтрации пакетов IPv4 можно с помощью iptables.
iptables -A INPUT -p tcp —dport 4000 -j ACCEPT
Тестирование порта
После успешного открытия TCP-порта нужно его протестировать.
При отправке вывода ls любому подключенному клиенту, сначала запустите netcat (nc) и прослушивайте (-l) порт (-p) 4000:
ls | nc -l -p 4000
Теперь клиент получит вывод ls после того, как он откроет TCP-соединение на порту 4000. Пока оставьте этот сеанс.
Откройте другой терминал на той же машине.
Поскольку мы открыли TCP-порт, мы можем протестировать TCP-подключения с помощью telnet. Если у вас этой команды нет, установите ее с помощью менеджера пакетов.
Введите IP вашего сервера и номер порта (в данном случае 4000) и выполните следующую команду:
telnet localhost 4000
Эта команда пытается открыть TCP-соединение на локальном хосте через порт 4000.
Получим следующий вывод, в котором указано, что соединение с программой установлено (nc):
Trying ::1. Trying 127.0.0.1. Connected to localhost. Escape character is '^]'. while.sh
Вывод ls (в данном примере while.sh) отправлен клиенту, что указывает на успешное TCP-соединение.
С помощью nmap проверьте, открыт ли порт (-p):
nmap localhost -p 4000
Эта команда проверит открытый порт:
Starting Nmap 7.60 ( https://nmap.org ) at 2020-01-18 21:51 UTC Nmap scan report for localhost (127.0.0.1) Host is up (0.00010s latency). Other addresses for localhost (not scanned): ::1 PORT STATE SERVICE 4000/tcp open remoteanything Nmap done: 1 IP address (1 host up) scanned in 0.25 seconds
Как видите, вы успешно открыли новый порт в Linux.
Примечание: nmap выводит список только открытых портов, на которых в данный момент есть прослушивающее приложение. Если вы не используете приложение для прослушивания (например netcat), то порт 4000 будет отображаться как закрытый, поскольку в настоящее время на этом порту нет ни одного прослушивающего приложения. Аналогично не будет работать и telnet, поскольку этой команде также нужно прослушивающее приложение. Именно по этой причине nc такой полезный инструмент. Он имитирует такие среды с помощью простой команды.
Но порт открыт временно, так как изменения будут сбрасываться при каждой перезагрузке системы.
Сохранение правил брандмауэра
Способ, который мы рассмотрели в этом мануале только временно обновляет правила брандмауэра, пока система не выключится или не перезагрузится. Поэтому для повторного открытия того же порта после перезагрузки необходимо повторить эти шаги. Однако правила брандмауэра можно сохранить навсегда.
Для брандмауэра ufw
Правила ufw не сбрасываются при перезагрузке. Это происходит потому, что он интегрирован в процесс загрузки, и ядро применяет соответствующие конфигурационные файлы и сохраняет правила брандмауэра ufw.
Для firewalld
Необходимо применить флаг –permanent, чтобы правила были действительны после перезагрузки системы.
Для iptables
Чтобы сохранить правила конфигурации, рекомендуется использовать iptables-persistent.
Подводим итоги
В этом туториале мы разобрали, как открыть новый порт в Linux и настроить его для входящих соединений, а также поработали с netstat, ss, telnet, nc и nmap.