У меня 3 машины в 3 разных сетях.
ДОМ:
- С интернетом, но без подключения к локальной машине, с sudo.
РАБОТА:
- С ssh, доступным через www интернет,
- ДОМможет ssh кРАБОТА, но не наоборот
- РАБОТАможет делать как исходящий, так и входящий ssh
- У меня естьнетдоступ sudo на этом компьютере
- машина не имеет
iptables
установленного
СЕРВЕР:
- СЕРВЕРподключен к www интернету
- СЕРВЕРможет ssh кРАБОТА, но не наоборот
- СЕРВЕРможет делать только исходящие ssh.
- У меня есть доступ к sudo на этом компьютере.
Итак, теперь сеть может сделать следующее:
ДОМОЙ -> РАБОТА <- СЕРВЕР
Учитывая эту конфигурацию, как мне получитьДОМдля подключения кСЕРВЕР? Все три машины работают под управлением Ubuntu. У меня есть только доступ к командной строке ко всем трем машинам.
решение1
Для этого решения ssh вам не понадобится sudo.
Сначала в командной строке на СЕРВЕРЕ настройте удаленную переадресацию портов с РАБОЧЕЙ машины на СЕРВЕР:
SERVER$ ssh -f -N -R 23456:SERVER:22 workuser@WORK
Затем, пока этот процесс запущен, вы сможете сделать следующее:
HOME$ ssh -t workuser@WORK ssh -p23456 serveruser@localhost
То есть из ДОМА вы должны иметь возможность подключиться через РАБОТУ, а затем через туннель ssh к машине СЕРВЕРА.
Должно быть возможно использовать :23456, чтобы указать, что ssh должен прослушивать все интерфейсы на машине WORK, но у меня это не сработало, предположительно, потому что GatewayPorts был отключен. Если бы это сработало, вторую команду можно было бы упростить до этого:
HOME$ ssh -p23456 serveruser@WORK