Можно ли указать другой порт ssh при использовании rsync?

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

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

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

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

8 ответов


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

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

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


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

cat ~/.ssh/config
Host host
    Port 2222

затем rsync через ssh будет говорить с портом 2222:

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

когда вам нужно отправить файлы через определенный порт 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

используйте опцию "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/


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


Я нашел это решение на майку поход Хостетлер это - сайт, который отлично работает для меня.

# rsync -avz -e "ssh -p $portNumber" user@remoteip:/path/to/files/ /local/path/

Rsync работает как демон на TCP-порту 873, незащищенный, не имеет ничего общего с SSH

от Rsync man:

Push: rsync [опция...] SRC... [ПОЛЬЗОВАТЕЛЬ@]ХОСТ: DEST

заставляет вас верить, что ваша команда верна:

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

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

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

по rsync -РВЗ --прогресс --удалить-отправлено-файлы -э "СШ -п 2222" ./ dir user@host / path


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