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

成功免密SSH登录经销商账户,子账户需密码的原因咨询

为什么主账户SSH免密正常,子账户却要输密码?

这是个很常见的SSH配置问题,我来帮你拆解几个最可能的原因和解决办法:

1. 公钥没部署到子账户的authorized_keys里

你之前给主账户配置免密的时候,肯定是把本地机器的SSH公钥(一般是~/.ssh/id_rsa.pub里的内容)添加到了主账户家目录下的~/.ssh/authorized_keys文件里对吧?但子账户的这个文件里并没有你的公钥,所以SSH服务器没法验证你的身份,自然就会要求输入密码了。

解决办法很简单:

  • 先通过主账户登录到服务器
  • 执行这条命令把公钥复制到子账户的authorized_keys里(把subuser换成你的子账户名):
    cat ~/.ssh/id_rsa.pub | sudo -u subuser tee -a /home/subuser/.ssh/authorized_keys
    
  • 如果子账户还没有.ssh目录,先创建:sudo -u subuser mkdir /home/subuser/.ssh

2. 子账户的.ssh目录或authorized_keys权限不对

SSH对权限要求特别严格,这是出于安全考虑。如果子账户的.ssh目录权限不是700(只有所有者能读、写、执行),或者authorized_keys文件权限不是600(只有所有者能读、写),SSH会直接跳过公钥认证,转而要求密码。

解决步骤:

  • 切换到子账户(或者用主账户加sudo)执行:
    sudo -u subuser chmod 700 /home/subuser/.ssh
    sudo -u subuser chmod 600 /home/subuser/.ssh/authorized_keys
    

3. SSH服务器配置限制了子账户的公钥认证

有可能服务器的sshd_config配置文件里,针对子账户或者其所在用户组,禁用了公钥认证,或者只允许特定用户用免密登录。比如AllowUsers参数里只列了你的主账户,那子账户就没法用公钥登录了。

检查和解决方法:

  • 用主账户登录后,编辑/etc/ssh/sshd_config(需要sudo权限):
    sudo nano /etc/ssh/sshd_config
    
  • 检查以下参数:
    • PubkeyAuthentication 是否设置为 yes(默认应该是,但可能被修改了)
    • AllowUsers 或 AllowGroups 是否包含子账户或其所在组,如果有这个参数,要确保子账户在列表里
  • 修改后重启SSH服务:
    sudo systemctl restart sshd
    

4. 子账户的家目录权限不安全

如果子账户的家目录(比如/home/subuser)权限设置得太松,比如允许其他用户写入(比如权限是777),SSH会认为这个目录有安全风险,拒绝使用公钥认证。

解决方法:

  • 调整家目录权限为755(所有者可读可写可执行,其他用户可读可执行):
    sudo chmod 755 /home/subuser
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:54:04