使用rsync同步EC2实例文件到Macbook失败的问题排查
问题分析与解决
第一个命令的问题
执行sudo rsync -av exprod:~/production /Users/username/Downloads/出现主机名解析错误,核心原因是:
sudo会切换到root用户环境,root的~/.ssh/config和你当前用户的配置文件不是同一个,因此root无法识别exprod这个SSH主机别名。
解决办法:
- 若目标目录
/Users/username/Downloads/属于当前用户(无需root权限),直接去掉sudo执行:
rsync -av exprod:~/production /Users/username/Downloads/
- 若必须使用
sudo,需指定当前用户的SSH配置文件路径:
sudo rsync -av -e "ssh -F ~/.ssh/config" exprod:~/production /Users/username/Downloads/
第二个命令的问题
执行sudo rsync -av -e "ssh -i ~/.ssh/myawskey.pem" ~/production/* /Users/myusername/Downloads/出现文件不存在错误,原因包括:
- 源路径
~/production/*是本地路径,而非EC2实例上的路径,你本地并没有该目录; - 加上
sudo后,~会指向root的home目录,进一步导致路径错误; - 缺少远程主机标识,正确的远程路径格式应为
[远程用户@]主机名:远程路径。
正确命令(无需sudo的情况):
rsync -av -e "ssh -i ~/.ssh/myawskey.pem" ec2-user@你的EC2公网IP:~/production /Users/myusername/Downloads/
如果想复用SSH config里的exprod配置,直接使用第一个修正后的无sudo命令即可(前提是exprod配置已包含用户、密钥、主机IP等信息)。
内容的提问来源于stack exchange,提问作者electrophile
相关产品推荐
相关产品推荐

