我有一个备份脚本,对于一个用户来说失败了,希望你们中的一些人能给我指出正确的方向。我想我已经很接近了,但担心犯任何错误。目标服务器是一个监狱 SCP 环境,有 4 个不同的用户/主文件夹。备份服务器能够备份 4 个用户/文件夹中的 3 个,但每次都会备份其中 1 个用户/文件夹失败。它们都使用相同的 SSH 密钥并引用相同的密钥文件。
我不知道这是怎么发生的,但我想看看如何让用户 4 再次备份。我不确定如何在不创建新密钥或类似的东西的情况下做到这一点,但不想打扰其他用户。基本上,我只想将第 4 个用户重新添加到组合中,以便他可以使用密钥。
这就是发生的事情。
chen-backup (backup server)
dest-server (destination server, SCP jailed, 4 home directories that are being backed up, each home directory has ownership from user1, user2, user3 and user4::user4 cannot backup)
脚本在 chen-backup 上运行,使用 rsync 和位于 root/.ssh/chebackconfig 中的配置文件
chbackconfig:主机 dest-server 主机名 dest-server.apples.com IdentityFile ~/.ssh/dest_backup_id
dest_backup_id 的 SSH 文件只是一个普通的 SSH 文件。
如果我运行 ssh user4@dest-server 我会收到输入密码的提示(我不知道)。如果我为每个其他用户运行它,它就会让我毫无问题地进入。如果我继续到目标服务器并更改 User4 的 PW,我是否必须创建一个新的 ssh-keygen?另外,如果我更改 user4 PW,是否会破坏其他系统用于访问目标服务器的密钥?
我想我很难完全理解按键和其他东西。
答案1
如果您在测试中手动显式指定密钥,例如:
ssh -i ~/.ssh/dest_backup_id user4@dest-server
那成功了吗?
您可以使用-v
withssh
来增加输出的详细程度,这有助于隔离此类性质的问题。
我要检查的第一件事是 user4 有一个$HOME/.ssh/authorized_keys
文件,并且公钥是否正确存在。
如果正确列出了密钥,请确保$HOME/.ssh
目录及其中所有文件的权限正确。还有$HOME
。
chmod go-w /home/$USERNAME
chmod 700 /home/$USERNAME/.ssh
chmod 644 /home/$USERNAME/.ssh/authorized_keys
另外,请确保这些文件均归正确的用户所有:
chown -R $USERNAME /home/$USERNAME/.ssh
另外,检查日志也是个好主意。通常,sshd
记录到/var/log/auth.log
,但您可以在文件中验证这一点/etc/ssh/sshd_config
。如果需要,请增加日志记录的详细程度,然后重新启动 ssh 服务。
根据我的经验,当使用密钥的 ssh 无法按预期工作时,这是一个权限问题。也许有人以 root 身份复制了一个文件,但忘记对其进行 chown,或者私钥的权限过于开放,或者其他什么。
而且,不,更改密码不会对 ssh_keys 的使用产生任何影响。虽然密码和 ssh_key 在允许访问系统方面似乎执行类似的功能,但它们通过非常不同的机制来实现,并且 sshd 确实不依赖密码(尽管通常必须有一个帐户,并且它不能被锁在门外)。