SCP между двумя сетями

SCP между двумя сетями

Мне нужно передать файл между двумя компьютерами, которые не подключены к одной сети. У меня есть третий компьютер, который видит обе сети через VPN.

С третьего компьютера я могу сделать:

scp root@firstcomputer:./file ./

И закончите перевод следующим предложением:

scp ./file root@secondcomputer:./

Но я не могу сделать это одной строкой, вот так:

scp root@firstcomputer:./file root@secondcomputer:./

Ответ об ошибке:

ssh: connect to host secondcomputer port 22: No route to host
lost connection

Я понимаю, что это, вероятно, потому, что первый компьютер не видит второй компьютер. Возможно ли дать SCP параметр, который имеет дело с тем фактом, что машина, на которой запущена программа SCP, является единственной, кто может видеть оба компьютера?

Кстати, третий компьютер — это Mac с Lion, а первый и второй работают под управлением Debian.

решение1

Вы должны иметь возможность использовать SSH-туннель.

Предположим, что вы пытаетесь передать файл с удаленного компьютера («удаленный») на свой локальный компьютер («локальный»), установите туннель через третий компьютер («шлюз»), введя на своем локальном компьютере следующее:

ssh -fNL 12345:remote:22 gatewaylogin@gateway

Затем вы можете запустить неограниченное количество команд SCP в этом туннеле (все еще печатая на своем локальном компьютере):

scp -P 12345 remotelogin@localhost://path/to/remote/file /local/path/where/you/want/file

Я только что проверил это в своей сети, и все работает отлично.

Описанный выше метод хорош, если удаленная сеть защищена, но если она не защищена, вам придется установить туннель между локальной сетью и шлюзом, а также еще один туннель между шлюзом и удаленной сетью, связав их общим номером порта.

решение2

Опция scp -3 должна быть тем, что вы ищете. Чтобы использовать ее в вашем примере:

scp -3 root@firstcomputer:./file root@secondcomputer:./

Обратите внимание, что опция -3 впервые была представлена ​​в OpenSSH 5.7, выпущенном в начале 2011 года.

решение3

Вы можете попробовать это:

root@firstcomputer:./file /tmp && scp /tmp/file root@secondcomputer:./ && rm /tmp/file

Это скопирует файл в каталог /tmp на третьем компьютере, и если это будет успешно, он повторно скопирует этот файл на вторичный компьютер, а затем очистит себя. Поскольку вы используете оператор &&, каждая команда будет выполняться только в том случае, если предыдущая команда будет успешной.

Связанный контент