При создании SSH-туннеля или пробросе портов по умолчанию он доступен только для локального хоста. Если не указано, он прослушивает IP-адрес loopback или localhost (127.0.0.1). Этот IP-адрес недоступен для других хостов, поэтому проброшенный порт недоступен извне.
Вы можете разрешить публичный доступ к туннелю SSH, создав проброс портов или туннель, который прослушивает доступный IP-адрес, и настроив необходимые правила брандмауэра для разрешения входящих подключений к туннелю.
Шаги по настройке публичного доступа к туннелю SSH
Получите IP-адреса ваших хостов.
1 | ip a |
Пример вывода
1 2 3 4 5 6 7 8 9 10 11 12 13 | 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:0c:29:08:63:73 brd ff:ff:ff:ff:ff:ff altname enp2s1 inet 192.168.111.25/24 brd 192.168.111.255 scope global dynamic noprefixroute ens33 valid_lft 66553sec preferred_lft 66553sec inet6 fe80::fc5d:1d5c:ae0e:68f1/64 scope link noprefixroute valid_lft forever preferred_lft forever |
Создайте туннель или переадресацию портов, указав IP-адрес для прослушивания.
1 | ssh -fN -D 192.168.111.25:8080 192.168.111.29 |
Проверьте, запущен ли туннель на указанном IP-адресе.
1 | ss -natp | grep 8080 |
Настройте брандмауэр, чтобы разрешить удаленный доступ к туннельному порту.
1 | sudo ufw allow 8080 |
1 | sudo firewall-cmd --zone=public --permanent --add-port=8080/tcp && sudo firewall-cmd --reload |
Доступ к туннелю с другого узла для проверки.
1 | curl --proxy socks5://192.168.111.25:8080 https://curlmyip.ru |