如何在rsync命令中自动应答‘y’以完成iPhone文件同步至远程服务器
如何让rsync同步时自动应答连接确认提示
嘿,这个问题我碰到过好几次了,其实有几个靠谱的方法能解决,我给你详细说说:
方法一:通过ssh参数自动接受主机密钥(最常用)
rsync默认是通过ssh来建立远程连接的,所以我们可以给ssh加上StrictHostKeyChecking=no参数,让它自动接受新的主机密钥,不会弹出确认提示。
具体命令格式如下:
rsync -avz -e "ssh -o StrictHostKeyChecking=no" /你的iPhone文件路径 user@远程服务器地址:/目标路径
-avz是rsync常用的参数:a表示归档模式(保留权限、时间戳等),v是 verbose 详细输出,z是压缩传输-e选项用来指定rsync使用的远程shell,这里我们给ssh加上了跳过主机密钥检查的参数
不过要注意:这个方法会自动接受所有新的主机密钥,存在一定的安全风险(比如中间人攻击),如果是在可信的网络环境下使用没问题,要是公共网络更推荐下面的方法。
方法二:提前将远程服务器密钥加入本地已知主机列表(最安全)
如果不想降低安全等级,可以先手动把远程服务器的主机密钥添加到本地的~/.ssh/known_hosts文件里,这样后续rsync连接时就不会再弹出确认提示了。
执行这条命令先获取并添加密钥:
ssh-keyscan 远程服务器地址 >> ~/.ssh/known_hosts
执行完之后,再正常运行你的rsync命令就不会有确认提示了。这个方法更安全,因为你提前确认了服务器的密钥,避免了潜在的安全风险。
方法三:用yes命令自动输入y(备选,不推荐)
还有一种简单粗暴的方式,用yes命令持续输出"y",通过管道传给rsync,这样当出现确认提示时会自动输入y:
yes y | rsync -avz /你的iPhone文件路径 user@远程服务器地址:/目标路径
但这个方法的问题在于:yes会一直输出y,如果rsync过程中出现其他需要确认的提示(比如文件覆盖提示),也会自动输入y,可能导致意外操作,所以除非你完全确定只有连接确认这一个提示,否则不建议使用。
内容的提问来源于stack exchange,提问作者Karthik Venkatesh
相关产品推荐
相关产品推荐

