Вопрос или проблема
nmap -p 24888 xxxxxxxx
24888/tcp filtered unknown
iptables opening port
-A INPUT -p tcp -m state --state NEW --dport 24888 -j ACCEPT
ssh -vv -p 24888 user@xxxxxxxxxx
OpenSSH_9.2p1 Debian-2+deb12u4, OpenSSL 3.0.15 3 Sep 2024
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 1: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: /etc/ssh/ssh_config line 3: Applying options for *
debug2: resolve_canonicalize: hostname xxxxxxxx is address
debug1: Connecting to xxxxxxxx [xxxxxxxx] port 24888.
ssh: connect to host xxxxxxxxx port 24888: Connection timed out
my sshd.config
AllowUsers user
AllowAgentForwarding no
AllowTcpForwarding no
ChallengeResponseAuthentication no
ClientAliveCountMax 2
ClientAliveInterval 300
DebianBanner no
GSSAPIAuthentication no
IgnoreRhosts yes
LoginGraceTime 20
MaxAuthTries 3
MaxSessions 1
KerberosAuthentication no
PermitUserEnvironment no
PermitEmptyPasswords no
PasswordAuthentication no
PrintMotd no
Port 24888
Protocol 2
PermitRootLogin no
PermitTunnel no
X11Forwarding no
UsePAM yes
sudo systemctl status ssh
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; preset: enabled)
Active: active (running) since Tue 2025-01-21 19:47:46 CET; 27min ago
Docs: man:sshd(8)
man:sshd_config(5)
Process: 27771 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
Main PID: 27774 (sshd)
Tasks: 1 (limit: 38141)
Memory: 1.4M
CPU: 32ms
CGroup: /system.slice/ssh.service
└─27774 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"
Jan 21 19:47:46 localhost systemd[1]: Starting ssh.service - OpenBSD Secure Shell server...
Jan 21 19:47:46 localhost sshd[27774]: Server listening on 0.0.0.0 port 24888.
Jan 21 19:47:46 localhost systemd[1]: Started ssh.service - OpenBSD Secure Shell server.
netstat -tulp
tcp 0 0 0.0.0.0:24888 0.0.0.0:* LISTEN 27774/sshd: /usr/sb
Обновления:
@Ramhound: Я думаю, что мой роутер действует как NAT, но я не знаю, как открыть порты.
@music2myear: Нет, я не думаю, что у меня есть статический IP, но я могу спросить.
@Ramhound:
ssh -vvv -p 24888 xxxxxxxx
OpenSSH_9.2p1 Debian-2+deb12u4, OpenSSL 3.0.15 3 Sep 2024
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 1: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: /etc/ssh/ssh_config line 3: Applying options for *
debug2: resolve_canonicalize: hostname xxxxxxx is address
debug3: expanded UserKnownHostsFile '~/.ssh/known_hosts' -> '/home/user/.ssh/known_hosts'
debug3: expanded UserKnownHostsFile '~/.ssh/known_hosts2' -> '/home/user/.ssh/known_hosts2'
debug3: ssh_connect_direct: entering
debug1: Connecting to xxxxxxxx [xxxxxxx] port 24888.
debug3: set_sock_tos: set socket 3 IP_TOS 0x10
debug1: connect to address xxxxxxxx port 24888: Connection timed out
ssh: connect to host xxxxxxxx port 24888: Connection timed out
-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-A INPUT -f -j DROP
-A INPUT -i lo -s 127.0.0.0/8 -j ACCEPT
-A INPUT -i lo -j DROP
-A INPUT -p udp -m udp –sport 53 -m conntrack –ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m multiport –sports 80,443 -m conntrack –ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp ! –syn -m state –state NEW -j DROP
-A INPUT -m state –state INVALID -j DROP
-A INPUT -p tcp –syn -j DROP
-A INPUT -p tcp –dport 24888 -j ACCEPT
Вы пишете, что
Я думаю, что мой роутер действует как NAT, но я не знаю, как открыть порты.
Это является критическим препятствием.
Вы не можете подключиться к вашему публичному IP для ssh, если:
- Ваш сервер напрямую подключен без NAT к остальной части Интернета, или…
- Вы настроили роутер для перенаправления соответствующего порта и ваш интернет-провайдер разрешает входящий трафик.
Первое, похоже, в этом случае не является верным, а второе нельзя решить здесь без информации о вашем роутере и интернет-провайдере.
.
Ответ или решение
Для подключения к вашему публичному IP-адресу через SSH вам необходимо выполнить несколько важных шагов и настроек. В процессе будут рассмотрены аспекты, касающиеся конфигурации серверной и клиентской части, а также сетевых параметров, таких как NAT (Network Address Translation), чтобы обеспечить успешное соединение. Давайте подробно разберем, как это сделать, начиная с теоретического обоснования, затем применим на практике и обсудим наиболее критичные моменты, которые могут возникнуть.
Теоретическая часть
SSH (Secure Shell) — это протокол сетевой безопасности, который позволяет безопасно управлять удаленными серверами. Протокол SSH используется для авторизованного доступа и передачи данных в зашифрованном виде между клиентом и сервером. Эта технология критична для администрирования, особенно при удаленном управлении серверами.
Подключение к вашему серверу через публичный IP требует нескольких условий:
-
Доступность сервера и корректная его конфигурация: Сервер должен быть настроен таким образом, чтобы принимать соединения по определенному порту SSH (в вашем случае, 24888), и иметь необходимую конфигурацию безопасности.
-
Настройки NAT роутера: Если ваш сервер находится за роутером с NAT, требуется проброс соответствующего порта (в вашем случае, также 24888) на внутренний IP-адрес сервера. Это позволит запросам из внешней сети достигать вашего сервера.
-
IP-адрес: Важно иметь четкое понимание, статический или динамический IP-адрес предоставлен интернет-провайдером. В случае динамического IP, даже после проброса порта, нужно отслеживать изменения IP для стабильного доступа.
Практическая часть
Настройка сервера
Учитывая предоставленную конфигурацию, ваш сервер уже настроен на работу с протоколом SSH через нестандартный порт 24888. Ваша конфигурация /etc/ssh/sshd_config
настроена таким образом, что:
- Разрешено подключение конкретного пользователя через
AllowUsers user
. - Запрещены различные опции пересылки и аутентификации, такие как
AllowAgentForwarding
,AllowTcpForwarding
, что минимизирует риски. - Конфигурация поддерживает только протокол SSH версии 2 через
Protocol 2
.
Текущие настройки подразумевают, что сервис SSH активен, что подтверждается выводом sudo systemctl status ssh
. SSH слушает на всех интерфейсах (0.0.0.0) на порту 24888, что видно из вывода netstat -tulpn
.
Настройка firewall
У вас уже открыт входящий трафик на порт 24888 командой iptables -A INPUT -p tcp --dport 24888 -j ACCEPT
. Однако, важно проверить приоритет правил, потому что более ранние правила могут блокировать трафик раньше, чем дойдет дело до вашего разрешающего правила.
Настройка NAT и маршрутизатора
Роутеры с функцией NAT разделяют один публичный IP между несколькими устройствами в вашей локальной сети. Это требует настройки проброса порта (port forwarding), чтобы внешние запросы могли достигать вашего сервера:
-
Проброс порта: В панели управления роутером найдите секцию для правления NAT или Port Forwarding. Добавьте новое правило, которое будет перенаправлять трафик, приходящий на ваш роутер на порт 24888, на внутренний IP-адрес вашего сервера (например, 192.168.1.100) и тоже на порт 24888. Документация вашего роутера или помощь провайдера могут быть полезны на этом этапе.
-
Проверка доступа: Используйте внешние источники, такие как мобильное подключение, чтобы убедиться, что порт открыт и доступен для соединений снаружи вашей сети.
Динамический IP
Если ваш IP-адрес динамический, разумно использовать сервисы динамического DNS (DDNS), такие как No-IP или DynDNS, чтобы иметь постоянное доменное имя для вашего изменяющегося IP. Это упростит подключение к вашему серверу независимо от изменений IP.
Заключение
Подключение к публичному IP через SSH involves комплекс настроек и требует внимания к деталям сетевой конфигурации. Обеспечение правильной настройки серверной части, конфигурация NAT роутера и отслеживание IP-адреса являются ключевыми факторами для успешного подключения. Рекомендуется также проконсультироваться с вашим интернет-провайдером, чтобы убедиться, что они не блокируют входящие соединения по нестандартным портам и уточнить возможность получения статического IP-адреса.