You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

误执行rsync后无法通过公钥SSH登录AlmaLinux 9服务器的user2账户求助

误执行rsync后无法通过公钥SSH登录AlmaLinux 9服务器的user2账户求助

听起来你碰到的是个典型的“误操作引发连锁权限问题”的情况——本来公钥登录好好的,误跑了带尾斜杠的rsync、删了目标目录内容后,突然就公钥验证失败了,密码登录却正常。结合你描述的细节,我帮你梳理下排查方向和解决方案:

先重点排查最容易被忽略的家目录权限问题

你提到Server2上user2的根目录权限是0775,这很可能就是问题所在!SSH对公钥登录的家目录权限有严格的安全限制:家目录不能给其他用户开放写权限,否则SSH服务会直接拒绝公钥验证(怕被其他用户篡改密钥文件)。

先在Server2上检查user2家目录的权限和属主:

ls -ld /home/user2

正常要求是:

  • 权限为0700(仅所有者可读可写可执行),或者0755(其他用户仅可读,不能写)
  • 属主和属组必须是user2:user2

如果不符合,立刻修复:

# 修复权限
chmod 700 /home/user2
# 修复属主属组
chown user2:user2 /home/user2

这一步大概率能解决问题,毕竟你之前做过rsync和删除操作,很可能不小心改动了家目录的属性。

查看SSH服务日志,精准定位失败原因

客户端的Permission denied提示太笼统,去Server2上看SSH的详细日志,能直接看到为什么公钥验证被拒。AlmaLinux 9的SSH日志在/var/log/secure里,执行:

tail -f /var/log/secure

然后从客户端(Server1或你的笔记本)尝试用公钥登录user2,日志里会输出具体错误,比如bad ownership or modes for directory /home/user2、invalid key或者SELinux context mismatch之类的,直接指向问题根源。

验证authorized_keys的完整性和格式

虽然你说没改动这个文件,但保险起见,检查下user1的公钥是否正常:

cat /home/user2/.ssh/authorized_keys

确保user1的公钥是单独一行,格式是标准的ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ... user1@server1,没有多余的空格、换行或者乱码。

用verbose模式看客户端的连接细节

在客户端执行带-vv参数的SSH命令,能看到公钥登录的完整过程:

ssh -vv user2@domain2

重点看输出里关于公钥的部分,比如Offering public key: ...之后服务器的响应,如果服务器拒绝,会有明确的提示信息,帮你缩小排查范围。

排查SELinux的影响

AlmaLinux 9默认开启SELinux,如果user2的.ssh目录或authorized_keys文件的SELinux上下文被误改,也会导致公钥登录失败。检查上下文:

ls -Z /home/user2/.ssh/

正常情况下,authorized_keys的上下文应该是system_u:object_r:ssh_home_t:s0,如果不对,用下面的命令修复:

restorecon -Rv /home/user2/.ssh/

总结

你的问题大概率是误操作导致user2家目录权限不符合SSH的安全要求,先从家目录权限入手修复,再结合日志和verbose输出确认问题。只要密码登录正常,说明账户本身没问题,公钥登录的问题基本都和权限、配置文件格式、SELinux这几个点有关。

备注:内容来源于stack exchange,提问作者dstonek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 10:00:34