Відповідь ProxyCommand Grawity працювала на мене, але, оскільки я менш знайомий з SSH, знадобилося деяке експериментування. Я думав, що я просто викладу відповідь Grawity більш детально, щоб допомогти будь-яким іншим новачкам в 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
(Server C). Але щоб дістатися до нього, потрібно спочатку увійти на сервер з IP-адресою 0.0.1.1
з обліковим записом користувача foo
(Server 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