求一个 Linux 使用 rsync 远程同步,指定端口的写法

2021-01-30 13:57:53 +08:00
 cryboy007
当前的写法是,
rsync -vzrtopg --progress -e ssh --delete  root@znsd.top/home/dockertls.sh /home/
由于我使用的 frc 穿透,导致端口不是 22,改写成下面这样,还是不行
rsync -vzrtopg --progress -e ssh -p 5551 --delete  root@znsd.top/home/dockertls.sh /home/

,求大佬教教

1038 次点击
所在节点    问与答
8 条回复
XiaoxiaoPu
2021-01-30 14:09:08 +08:00
把 -e 后面的参数用引号包起来,如下

-e 'ssh -p 5551'
cryboy007
2021-01-30 19:51:10 +08:00
@XiaoxiaoPu 谢谢,可以了
cryboy007
2021-01-30 20:45:38 +08:00
```shell
#!/usr/bin/expect
set timeout 30
set password xxxx
#spawn ssh -l root znsd.top -p 5551
spawn rsync -vzrtopg --progress -e 'ssh -p 5551' root@znsd.top:/home/dockertls.sh /home/
#>/dev/null 2>&1
expect "*password*" {send "$password\r"}
interact

```
现在,我想实现自动输入 ssh 密码验证,但是当我使用 expect 的时候,报这个错误
Unexpected remote arg: root@znsd.top:/home/dockertls.sh
rsync error: syntax or usage error (code 1) at main.c(1343) [sender=3.1.2]
spawn_id: spawn id exp6 not open
while executing
"interact"
(file "/home/xxx.sh" line 8)

试过不自动输入密码,是可以的.
cryboy007
2021-01-30 21:30:22 +08:00
@XiaoxiaoPu 麻烦大佬了 /又有一个小问题...
eason1874
2021-01-31 07:20:47 +08:00
ssh 不能传参输入密码,但可以通过 -i 指定密钥文件位置。如果是自动化脚本,考虑取消公钥检查,不取消第一次连接目标主机会要求确认公钥指纹。比如:

ssh -p 5551 -i /my/key.pem -o StrictHostKeyChecking=no
internelp
2021-01-31 10:03:00 +08:00
如果需要长期自动同步,可以考虑启动 rsync 服务。
cryboy007
2021-01-31 14:46:33 +08:00
@eason1874 我试过如果不指定端口就没有这个问题,能够自动输入密码,到时候试试秘钥登录
cryboy007
2021-01-31 14:46:55 +08:00
@internelp 到时候研究下.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/749819

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX