Следующая команда работает должным образом.
ssh soak@10.10.10.11 "ssh soak@10.199.199.191 'cat test.txt'" > /home/shantanu/test.txt
Что мне нужно сделать, так это скопировать весь каталог, а не один файл.
Можно ли использовать rync с SSH-туннелированием?
Ты можешь использовать 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
Вы можете добавить смолу.
например.
ssh soak@10.10.10.11 "ssh soak@10.199.199.191 'tar cf - test_directory'" | tar xf -
Также доступна команда ssh ProxyCommand.
Из Бессмертно:
Host internal.hostname.tld internal
User merdely
HostName internal.hostname.tld
ProxyCommand ssh merdely@gateway.hostname.tld nc %h %p 2> /dev/null