1

Я хочу скопировать файлы с удаленного компьютера (W) на частный хост-компьютер (P) через scp. Поскольку я не могу подключиться к машине W напрямую, я использую ssh-туннель через 2 разные машины с портом 22. То, что я хотел бы сделать, это войти на компьютер W и оттуда выполнить передачу файла scp на компьютер P, проблема в том, что P скрыт в сети, поэтому я не могу указать ip удаленного хоста, когда я вошел на компьютер W . Есть ли решение для этого? Мне удается сделать это, когда я вошел в систему компьютера P, но я не хочу запоминать путь к файлу каждый раз, когда я копирую файл.

2 ответа2

2

Я бы порекомендовал монтировать удаленную файловую систему локально, используя sshfs. Я не знаю деталей вашей настройки, но приведу пример. Я настроил туннель через удаленный сервер (R1) на недоступный второй сервер (R2) в сети R1 с помощью этой команды:

ssh -fN -p 24222 user@R1 -L 2222:R2:22

Теперь я могу подключиться к R2 следующим образом:

ssh -p 2222 127.0.0.1

Я также могу использовать sshfs для локального монтирования каталога из R2:

sshfs -p 2222 127.0.0.1:/path/to/dir /mnt/mountpoint

Я пробовал это, используя туннель через один, а не два удаленных сервера, но я не вижу причин, почему он не должен работать с 3 или более, если туннель был правильно настроен.

Это не совсем то, что вы просили, но это должно служить обходным путем. После того как удаленная файловая система смонтирована локально, вы можете использовать простой cp для копирования файлов в нее или из нее.

1

После уточнения настроек, как описано выше, ваша система выглядит следующим образом:

P -- R -- M1 -- M2 -- W

R - это маршрутизатор NAT, который разрешает соединения только от P к M1 , но не наоборот, и все узлы должны использоваться для установления соединения.

Решение 1

Ваша единственная реальная проблема - это маршрутизатор R над которым у вас нет контроля, поэтому вы должны каким-то образом установить туннель, чтобы позволить W подключиться обратно. Самое простое решение - P установить SSH-соединение с M1 и установить обратный порт вперед.

Затем вы можете настроить второй SSH-туннель от W до M2 для пересылки локальных пакетов на перенаправленный порт обратного порта на M1 , который, в свою очередь, может использоваться для установления туннельного SSH-соединения от W к P

Решение 2

Теперь это добавляет некоторую сложность всей установке, что делает ее довольно подверженной ошибкам. Лучшим решением было бы установить VPN-соединение между W и M1 , P и M2 и между M1 и M2 . Затем вы можете установить маршрутизацию, используя частный диапазон адресов от W до P по этим трем туннелям. Чтобы это работало, вам нужен root-доступ как к M1 и к M2 и вам нужно настроить надлежащие брандмауэры, чтобы никто снаружи не входил в ваши VPN.

Конечно, есть и другие решения, но что вам нужно продумать, как пакеты будут проходить через все эти блокировки, то реальное решение может быть адаптировано под ваши инструменты.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .