成功免密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
相关产品推荐
相关产品推荐

