Вы можете передать tar.
через конвейер, например,
ssh soak@10.10.10.11 "ssh soak@10.199.199.191 'tar cf - test_directory'" | tar xf -
Вы можете использовать scp
для копирования одного или нескольких файлов, а также использовать rsync
с транспортом ssh:
scp -r localdirectoryname username@hostname:/remotepath
и
rsync -av localdirectory username@hostname:/remotepath
Обе программы также работают наоборот, с удаленной частью в качестве отправителя, а локальная - в качестве пункта назначения.
См. man scp
и man rsync
.
Изменить
Если вам действительно нужен промежуточный сервер, вы можете использовать переадресацию порта ssh:
В одной оболочке используйте эту команду для установки переадресации портов:
ssh -NL 10022:10.199.199.91:22 soak@10.10.10.11
Это соединяет порт 10022 на вашем локальном компьютере с порт 22 на 10.199.199.91
, но оболочка не открывается, а просто блокируется, пока вы ее не завершите.
Впоследствии, в другой оболочке / xterm, вы можете использовать либо
scp -r -P 10022 localpath soak@localhost:/remotepath
, но должны знать, что soak @ localhost
фактически указывает на soak@10.199.199.191
при вводе ваших учетных данных.
Edit 2, теперь с rsync
Как вы конкретно спрашивали о rsync, вот как использовать rsync вместо scp. Для этого требуется такая же переадресация портов, что и для варианта scp
:
rsync -av --rsh="ssh -p 10022" localpath soak@localhost:/remotepath
, и еще раз помните, что вы фактически подключаетесь к soak@10.199.199.191
.
Другой способ - использовать Перенаправление портов SSH .
Сначала выполните следующую команду на своем компьютере:
$ ssh -N -f -L 2302:10.199.199.191:22 soak@10.10.10.11
Это выделит сокет для прослушивания порта 2302 на локальном хосте. Каждый раз, когда соединение подключается к этому порту, оно будет перенаправлено на 10.199.199.191:22
.
Итак, вы можете скопировать папку на 10.199.199.191
на свой компьютер с помощью:
$ scp -r -P 2302 soak@localhost:/path/to/folder /path/to/destination/dir