Можно ли указать другой порт ssh при использовании rsync? - PullRequest
324 голосов
/ 29 декабря 2010

Я пытался выполнить следующую команду:

rsync -rvz --progress --remove-sent-files ./dir user@host:2222/path

SSH работает на порту 2222, но rsync все еще пытается использовать порт 22, а затем жалуется на отсутствие пути, потому что, конечно, он не существует.

Я хотел бы знать, возможно ли выполнить rsync на удаленном хосте через нестандартный порт ssh.

Ответы [ 8 ]

561 голосов
/ 08 января 2011

Ваша командная строка должна выглядеть так:

rsync -rvz -e 'ssh -p 2222' --progress ./dir user@host:/path

это работает нормально - я использую его все время, не требуя новых правил брандмауэра - просто обратите внимание, что сама команда SSH заключена в кавычки.

116 голосов
/ 01 января 2014

Другой вариант: на хосте, с которого вы запускаете rsync, задайте порт в конфигурационном файле ssh, например:

cat ~/.ssh/config
Host host
    Port 2222

Затем rsync через ssh подключится к порту 2222:

rsync -rvz --progress --remove-sent-files ./dir user@host:/path
13 голосов
/ 27 января 2015

когда вам нужно отправить файлы через определенный SSH-порт:

rsync -azP -e "ssh -p PORT_NUMBER" source destination

пример

rsync -azP -e "ssh -p 2121" /path/to/files/source user@remoteip:/path/to/files/destination
7 голосов
/ 26 ноября 2014

используйте "опцию rsh".Например:

rsync -avz --rsh='ssh -p3382' root@remote_server_name:/opt/backups

см .: http://www.linuxquestions.org/questions/linux-software-2/rsync-ssh-on-different-port-448112/

2 голосов
/ 03 марта 2016

Немного оффтоп, но может кому-то помочь.Если вам нужно передать пароль и порт, я предлагаю использовать пакет sshpass.Команда командной строки будет выглядеть так: sshpass -p "password" rsync -avzh -e 'ssh -p PORT312' root@192.xx.xxx.xxx:/dir_on_host/

1 голос
/ 11 мая 2014

Я нашел это решение на сайте Майка Hike Hostetler, который отлично работал для меня.

# rsync -avz -e "ssh -p $portNumber" user@remoteip:/path/to/files/ /local/path/
0 голосов
/ 11 марта 2018

Правильный синтаксис - указать Rsync использовать собственную команду SSH (с добавлением -p 2222), которая создает безопасный туннель для удаленной стороны с использованием SSH, а затем подключается через localhost: 873

rsync-rvz --progress --remove-sent-files -e "ssh -p 2222" ./dir user @ host / path

Rsync работает как демон на TCP-порту 873, который не являетсяsecure.

От Rsync man:

Push: rsync [OPTION ...] SRC ... [USER @] ВЕДУЩИЙ: DEST

Что вводит в заблуждение людей, чтобы попробовать это:

rsync -rvz --progress --remove-sent-files ./dir user @ host: 2222 / path

Однако,он указывает ему подключиться к демону Rsync через порт 2222, которого там нет.

0 голосов
/ 06 января 2011

Мне не удалось заставить rsync подключиться через ssh через другой порт, но я смог перенаправить соединение ssh на компьютер, который я хотел через iptables.Это не то решение, которое я искал, но оно решило мою проблему.

...