Ответ от Grawity ProxyCommand работал для меня, но, поскольку я менее знаком с SSH, потребовались некоторые эксперименты. Я подумал, что просто изложу ответ Гравити более подробно, чтобы помочь другим новичкам в SSH, таким как я. Вот определения для более явного обозначения:
Машина A: машина, на которой вы находитесь
Сервер B: userB@ip.address.for.B (сервер перехода или промежуточный сервер)
Сервер C: userC@ip.address.for.C (удаленный сервер, на который вы хотите скопировать)
ProxyCommnad
A$ scp -oProxyCommand="ssh -W %h:%p userB@ip.address.for.B" thefile userC@ip.address.for.C:destination
Конкретный пример
Итак, для конкретного примера, скажем, у вас есть доступ к серверу с IP 0.0.1.2с учетной записью пользователя с именем bar(Сервер C). Но чтобы добраться до него, вам нужно сначала войти на сервер с IP 0.0.1.1с учетной записью пользователя с именем foo(Сервер B). Теперь вы хотите скопировать файл , baz.txtрасположенный на текущей машине (Machine A) для сервера 0.0.1.2«s /home/bar/директории. Чтобы использовать вышеупомянутый ProxyCommand для этого примера, вы должны выполнить следующее:
A$ scp -oProxyCommand="ssh -W %h:%p foo@0.0.1.1" baz.txt bar@0.0.1.2:/home/bar/
Вы также можете с легкостью скопировать файл с сервера C, изменив его порядок и место назначения. Так, например, если вы baz.txtуже находились на сервере, 0.0.1.2расположенном по адресу, /home/bar/вы можете скопировать его на свой компьютер, используя:
A$ scp -oProxyCommand="ssh -W %h:%p foo@0.0.1.1" bar@0.0.1.2:/home/bar/baz.txt /destination/path/on/A
Надеюсь, что это помогает людям, которые нуждаются в вещах, изложенных для них немного больше, чем другие.
A$ rsync <options> -e 'ssh B ssh' source C:destination