我在 Mac 上运行,我想设置一个 crontab 来每周从我的 VPS 进行 rsync 以获取一些备份档案。我使用 ssh 密钥(VPS 上不允许使用密码),通常我可以 ssh 进入而无需任何提示(我的私钥有一个密码,但它存储在 Mac 钥匙串中)。但是,当 cron 运行脚本时,它会失败并向我发送电子邮件说 ssh 失败:
Permission denied (publickey).
rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
rsync error: unexplained error (code 255) at /SourceCache/rsync/rsync-42/rsync/io.c(452) [receiver=2.6.9]
正在执行的脚本:
#!/bin/sh
rsync -Cavz -e "ssh -i /Users/bob/.ssh/id_rsa" bob@myvps:/backups/ ~/Documents/Backups
我究竟做错了什么?
答案1
我认为 cron 无法访问您的密码,这就是您无法登录远程服务器的原因。实现此目的的最佳方法是设置一个没有密码的新密钥。
使用没有密码的密钥不太安全,但你可以限制其使用。请参阅AUTHORIZED_KEYS 文件格式部分sshd 手册。