You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

配置MachineA至MachineB无密码SSH失败,遇PAM权限错误求助

搞定SSH无密码登录被PAM拒绝的问题

嘿,我来帮你排查这个问题!你遇到的fatal: Access denied for user golden by PAM account configuration [preauth]错误,核心是PAM的账户安全规则把你的登录请求给拦了——哪怕你已经把公钥加到了authorized_keys里,PAM的权限校验优先级更高。结合你提到的配置,咱们从这几个方向找问题:

1. 先查/etc/security/access.conf的规则

PAM的pam_access.so模块靠这个文件的规则决定谁能登录,常见坑点:

  • 有没有明确拒绝golden从MachineA登录的规则?比如类似这样的行:

    -:golden:192.168.x.x(这里的IP是MachineA的地址)

  • 规则顺序搞反了?这个文件是从上到下匹配,碰到第一条符合的就停。如果先写了-:ALL:ALL(拒绝所有),再写允许golden的规则,那第一条就直接把请求拦了,后面的规则根本不会生效。
  • 没给golden开权限?如果你的规则里只允许了特定用户登录,却没加golden的允许条目,或者默认规则是拒绝,那自然登不进去。

2. 检查SSH的PAM配置文件/etc/pam.d/sshd

SSH服务的PAM规则都在这儿,重点看:

  • 是不是启用了pam_access.so?如果有account required pam_access.so这行,说明access.conf的规则会强制生效;哪怕是account sufficient pam_access.so,它也会参与校验。
  • 有没有其他PAM模块搞事情?比如pam_listfile.so(按文件名单限制)、pam_time.so(按时间限制)这些,也可能导致golden的登录被拒。

3. 确认golden用户的账户状态没问题

  • 账户有没有被锁定?执行passwd -S golden,输出里要是有L标记,说明账户锁了,用passwd -u golden解锁就行。
  • 登录shell是不是有效的?看/etc/passwd里golden的条目,比如golden:x:1001:1001::/home/golden:/bin/bash,确保shell是/bin/bash/bin/sh这类能正常登录的,要是是/sbin/nologin/bin/false,默认SSH会直接拒掉。

4. 再核对一遍文件权限(别小看这个!)

虽然你提了权限设置,但还是再确认下:

  • MachineB上/home/golden/.ssh目录权限必须是700,执行chmod 700 /home/golden/.ssh
  • authorized_keys文件权限必须是600,执行chmod 600 /home/golden/.ssh/authorized_keys
  • 这些文件和目录的所有者必须是golden,执行chown -R golden:golden /home/golden/.ssh
    权限太松的话,SSH服务会拒绝,同时也可能触发PAM的安全校验。

快速测试方法

你可以先在/etc/security/access.conf最顶部加一条允许规则试试:

+:golden:MachineA的IP地址或主机名

然后重启SSH服务:systemctl restart sshd,再从MachineA的jenkins用户登录MachineB的golden用户。如果能登进去,说明问题就出在access.conf的规则上,再慢慢调整其他规则就行。


内容的提问来源于stack exchange,提问作者david

火山引擎 最新活动