bash - 使用 ssh key 以用户身份 rsync 文件

标签 bash cron rsync

我正在尝试将一些文件同步到我拥有的备份主机。
我希望能够以 cron 用户(在本例中名为 cron_user)的身份执行此操作。
目标主机在 ~/.ssh/authorized_keys 文件中具有包含 IP 地址的“from”行,并且我已将私有(private) DSA key 复制到用户保护目录(在封装的 ssh -i 命令中指定)。

系统仍然提示我输入密码。是否有另一种方法可以解决这个问题,或者我是否缺少一些东西来绕过需要密码并引用我指定的 ssh key ?

sudo rsync  --timeout=3600 -azO  -e 'ssh -i /var/cron_user/cron_user' /tmp/bacup1-$(date'+%Y-%m-%d' ).tgz /tmp/backup2$(date '+%Y-%m-%d' ).tgz cron_user@hbackup00:/database/backups/app_backup/

经过进一步调查,使用 -v 显示它不允许使用基于 IP 的 key :

 IP: debug1: Remote: Your host '10.5.122.118' is not permitted to use this key for login. 

尽管我在/home/user_cron/.ssh/authorized_keys 文件中列出了 IP:

 [root@hbackup00 user]# cat ~cron_user/.ssh/authorized_keys 
 from="10.5.112.42,10.5.122.118,10.5.100.200,10.5.100.205,10.5.99.223,10.4.99.229,10.4.99.223,10.4.100.182" ssh-dss

我是否遗漏了一些东西来允许该用户在没有密码的情况下进行身份验证?我已经测试过使用 ssh -i 从此处列出的其他主机调用相同的 key 文件,没有问题...

最佳答案

以下是一些可帮助您调试的建议:

  • 直接尝试 ssh,无需 rsync。这将有助于隔离问题 - 如果它仍然失败,则您需要测试的内容较少,如果它有效,那么您就知道 rsync 正在执行的 ssh 调用是不同的与您认为的不同,您可以对此进行调查。

  • 打开服务器上的日志记录。在 /etc/ssh/sshd_config 中,设置 LogLevel VERBOSE 或更高。 (请参阅 sshd_config 手册页。)有时,服务器会记录一些有趣的信息,但不会与客户端共享。

  • 使用 -vvv 在客户端命令行中调高日志记录。

关于bash - 使用 ssh key 以用户身份 rsync 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10002680/

相关文章:

linux - 我如何从我的 centos/tmp 目录中删除旧的 [er] 文件,除了某些仍在使用的文件?

rsync - Rsync 协议(protocol)在哪里记录?

bash - rsync --include 选项不排除其他文件

node.js - Node http-server 在 Windows 10 Ubuntu Bash 上不起作用

linux - 使用 AWK 查找排除某些行的列的平均值

git - 如何在分离的 HEAD 状态下找到当前的 git 分支

linux - 处理通过 ftp 传输到托管服务器中的一组目录中的文本文件

linux - 在 cron 作业中为 url 提供凭据

linux - 将文件从多个 Linux 服务器移动到中央 Windows 存储服务器

arrays - bash,返回数组中最小条目的位置