Я успешно создал SSH-туннель к нашему облачному серверу postgresql на локальном сервере Linux с помощью этой команды:
ssh -N -f -L 5431:localhost:xxxx mycloudserver.com
(где xxxx - удаленный порт)
С помощью этой команды я могу получить доступ к удаленной базе данных PostgreSQL через порт 5431, но только на этом сервере Linux.
Теперь я хочу «поделиться» этим соединением с другими ПК в сети, чтобы я мог подключиться к linux_server: 5431 с драйвером ODBC и читать облачную базу данных без установки какого-либо программного обеспечения SSH на клиентах. Не удалось открыть порт 5431 с помощью iptables.
iptables -A INPUT -p tcp -s 0/0 --sport 1024:65535 -d 192.168.128.5 --dport 5431 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -s 192.168.128.5 --sport 5431 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
Уже пробовал
ssh -N -f -L 5431:0.0.0.0:xxxx mycloudserver.com
слишком. Туннель успешно построен и работает на сервере, но я не могу «видеть» соединение от клиентов.
Вам нужно изменить свою команду, чтобы указать bind_address, например:
ssh -N -f -L 0.0.0.0:5431:localhost:xxxx mycloudserver.com
Это заставит его прослушивать все интерфейсы. Для проверки используйте:
netstat -lnp | grep 5431
Это действительно неправильный подход. Не используйте туннель SSH. Вместо этого настройте SSL на облачном сервере и сделайте прямые SSL-соединения, используя при необходимости ограничения IP-адресов.
Или, если вам необходимо использовать VPN, используйте тот, который предназначен для этой роли, вместо того, чтобы включать ssh в работу.
SSH туннелирует TCP через TCP, что вызывает проблемы с алгоритмами контроля перегрузки, повторной передачи и масштабирования окна. Это отличная утилита для специальной работы, но я бы не стал предлагать производственную многопользовательскую работу для вещей, которые используют значительную полосу пропускания.
если ты действительно должен, то вы можете использовать адрес привязки *
в твоем -L
, например
-L *:5431:localhost:xxxx
или установить GatewayPorts yes
в твоем .ssh/config
для этого хоста или через -o
параметр командной строки, например:
-o GatewayPorts=yes