Я могу ssh удаленной системе серверов через логин сервер (ssh user@lxplus.sern.ch
). С сервера входа в систему я могу ssh на конкретный сервер (ssh user@supercool
). Я не могу получить доступ к конкретному серверу напрямую (ssh user@supercool.sern.ch
). Как я могу запустить локальную rsync, чтобы получить каталог с этого конкретного сервера? Я не могу rsync с определенного сервера на локальную машину, потому что моя локальная машина не имеет общедоступного IP-адреса.
Как я могу rsync с сервера, доступного через ssh *через удаленный сервер входа в систему* на мой локальный компьютер, который не имеет внешнего IP-адреса?


1 ответ
так что ваш набор это:
Local Machine --> Intermediate Server --> Remote Server
если вы можете запустить команду rsync на удаленном сервере, и ваша локальная машина работает sshd, вы можете сделать это:
войдите на промежуточный сервер с помощью следующей команды ssh
ssh user@<intermediate server> -R 1024:localhost:22
это создаст обратный туннель SSH. Любые соединения SSH на промежуточном сервере на порту 1024 будут перенаправлены обратно на ваш локальный компьютер.
на этом этапе вы войдете в промежуточный сервер. Затем необходимо расширить туннель до удаленного сервера. На промежуточном сервере выполните:
ssh user@<remote server> -R 1024:localhost:1024
теперь любое SSH-соединение на порту 1024 на удаленном сервере будет возвращено на промежуточный сервер на порту 1024, который затем будет туннелирован обратно на вашу локальную машину. УФ!
теперь нам нужно обернуть это в rsync. Rsync имеет параметр удаленной оболочки (- e), который можно использовать для указания параметров ssh. Так что на удаленном сервере можно запустить (это немного из предположения из прошлого опыта, это, возможно, потребуется некоторая настройка):
rysnc -<whatver rsync options you want> -e "ssh -p 1024" <source directory> <local machine user>@localhost
Не забудьте всегда запускать команду rsync с --dry-run, чтобы убедиться, что она делает то, что вы ожидаете (в сочетании с различными уровнями детализации-v,- vv или-i или-ii в зависимости от версии rsync, участвующих.).

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]