У меня два сервера (на обоих работает 64-разрядная версия CentOS 5.5)
Один сервер подключен к общедоступной сети и имеет общедоступный IP-адрес, который я могу использовать для удаленного подключения к нему по SSH. Другой сервер подключен к серверу 1 через частную сеть.
Я хотел бы знать, как я могу перенаправить порт (скажем, 20222) на сервере 1 на порт 22 на сервере 2, чтобы я мог подключиться к серверу 2 с помощью любого клиента SSH, используя общедоступный IP-адрес сервера 1 и порт 20222.
Общедоступная сеть сервера 1 подключена через интерфейс eth0, а частная сеть подключена через eth1
Большое спасибо.
С уважением, Калпеш
Вы можете легко сделать это, создав туннель ssh:
ssh -L 20222:server_2_private_IP_address:22 server_1_public_IP_address
Вы также можете добавить это в свой ~ / .ssh / config, если он у вас есть:
Host foo
Hostname server_1_public_IP_address
User ...
...
LocalForward 20222 server_2_private_IP_address:22
После запуска ssh на server_1_public_IP_address вы сможете начать новый сеанс ssh на server_2, используя
ssh -p 20222 localhost
Никогда не пробовал, но должен работать с любым клиентом ssh, укажите его на localhost и por 20222.
И читать
man ssh
Все это там объясняется.
У MadHatter есть ответ iptables, если вы хотите пойти по этому пути.
Для быстрых и грязных перенаправлений во время миграций и прочего я использовал redir
Что-то вроде этого на Сервере 1:
redir --lport=20222 --caddr=$IP_OF_SERVER_2 --cport=22
Опять же, это просто работает на переднем плане и не выдержит перезагрузки, но это настолько удобная команда, что я подумал, что она уместна в этом обсуждении.
Вы также можете установить Stone (программное обеспечение для туннелирования с открытым исходным кодом tcp / udp), запустив, а затем выполните следующую команду от имени пользователя root
wget http://www.gcd.org/sengoku/stone/stone-2.3e.tar.gz
tar xzf ./stone-2.3e.tar.gz
cd ./stone-2.3d-2.3.2.7
make linux
cp ./stone /usr/bin/
cd ../
rm -Rf ./stone-2.3d-2.3.2.7
затем, как пользователь, выполните следующую команду
stone -D server1:20222/tcp server2:22/tcp
Предположим, что сервер 1 имеет внешний адрес 1.2.3.4 и внутренний адрес 10.0.0.1, а сервер 2 имеет внутренний адрес 10.0.0.2 и не имеет существующего маршрута по умолчанию:
на сервере 1:
iptables -t nat -A PREROUTING -p tcp --dport 20222 -i eth0 -j DNAT --to-destination 10.0.0.2:22
echo 1 > /proc/sys/net/ipv4/ip_forward
на сервере 2:
route add default gw 10.0.0.1
Ни один из этих параметров не является постоянным, то есть они не сохранятся после перезагрузки. Если они работают, мы можем обсудить, как сделать их постоянными.