Ответ от 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