Каждый порт на моем сервере заблокирован, кроме порта 222, к которому также подключается ssh. Этот сервер в значительной степени является резервным сервером, и у меня есть rsync для моих клиентов.
Я делаю это с помощью перенаправления портов ssh (-P 222 -L 873:myserver.com:873
), однако я хочу сделать это, просто используя команду rsync. Это возможно?
Вот что я пробовал:
sudo rsync -avv --progress --inplace --rsh='ssh -p 222 -L 873:myserver.com:873' . rsync://bt-backup@localhost/backup-bt-backup
но это не работает, потому что я пытаюсь войти в localhost, а не на myserver.com.
делать:
sudo rsync -avv --progress --inplace --rsh='ssh -p 222 -L 873:myserver.com:873' . rsync://bt-backup@myserver.com/backup-bt-backup
позволяет мне войти через ssh, но rsync пробует удаленный хост вместо localhost, на который также был перенаправлен порт
Если на сервере работает SSHd, вы можете просто использовать rsync
над SSH
прямо.
Например, я запускаю такие вещи, как
rsync -a --inplace some/dir/ user@remote.server.tld:/destination/dir/
все время. Нет необходимости запускать rsync в качестве демона или включать переадресацию портов, поскольку rsync запустит свою копию, используя ссылку SSH, и будет обрабатывать всю синхронизацию между собой и этим экземпляром через ссылку SSH (а удаленная копия закрывается по мере подключения сбрасывается, поэтому вы не получите кучу зомби-процессов).
Чтобы обсудить порт, отличный от стандартного, вам просто нужно дать rsync дополнительную информацию о том, как он должен управлять соединением, например:
rsync -a --inplace -e 'ssh -p 222' some/dir/ user@remote.server.tld:/destination/dir/
Это на самом деле более безопасно (вся связь rsync защищена безопасным транспортом SSH, тогда как с переадресацией портов все отправляется просто) и более удобно (rsyncd не требуется, и вы можете использовать аутентификацию на основе ключей SSH)
rsync -av --progress --inplace --rsh='ssh -p8023' somefile user@host:somedir/
Из ссылки http://www.linuxquestions.org/questions/linux-software-2/rsync-ssh-on-different-port-448112/
Вам нужна только переадресация портов, если вы хотите использовать rsyncd на удаленном хосте (с конфигурацией /etc/rsyncd.conf).
Если вам нужно подключиться к rsyncd на удаленном хосте:
ssh -p 222 -L 873:localhost:873 login@host -f -N -q && \
rsync [opts] rsync://rsync_user@localhost:873/ ...
Используйте сценарий для переопределения ssh. Создать скрипт ssh-connection.sh
со следующим содержанием:
#! /bin/bash
ssh -p 222 -L 873:myserver.com:873 -l bt-backup myserver rsync --server --daemon .
Не забудьте дать ему исполняемые права: chmod u+rx ssh-connection.sh
Этот сценарий намеренно игнорирует аргументы. Его следует использовать как:
sudo rsync -avv --progress --inplace --rsh='./ssh-connection.sh' . rsync://localhost/backup-bt-backup
Удачи,
Жуан Мигель Невеш