ssh免密码登陆设置时Authentication refused: bad ownership or modes错误解决方法

0.环境:

三个节点:node1,node2,node3

1.问题描述:

配置好免密登录后,免密登录失效,还需要输入密码,如下图:

2.原因查找:

 去查看系统的日志文件

使用命令:

sudo tail /var/log/secure -n 20

问题:

Aug 16 10:16:43 node2 sshd[3183]: Authentication refused: bad ownership or modes for directory /home/itwise

发现问题的所在:Authentication refused: bad ownership or modes for file

从字面上可以看出是目录的属主和权限配置不当,查找资料得知:SSH不希望home目录和~/.ssh目录对组有写权限,通过下面几条命令改下

(.ssh目录权限一般为755或者700。
rsa_id.pub 及authorized_keys权限一般为644
rsa_id权限必须为600)

3.问题解决:

chmod g-w /home/你的用户名

chmod 700 /home/你的用户名/.ssh

chmod 600 /home/你的用户名/.ssh/authorized_keys

 例如:

[itwise@node2 .ssh]$ chmod g-w /home/itwise/
[itwise@node2 .ssh]$ chmod 700 /home/itwise/.ssh/
[itwise@node2 .ssh]$ chmod 600 /home/itwise/.ssh/authorized_keys

说明:这里每个每个节点都需要执行这三条命令 

4.问题解决

这里显示登录成功:

备注:

删除免密登录文件:

每个节点都要删除:

cd ~

rm -rf .ssh/

SSH无密登录配置

(1)生成公钥和私钥

[itwise@node2 ]$ ssh-keygen -t rsa

然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

(2)将公钥拷贝到要免密登录的目标机器上

[itwise@node2]$ ssh-copy-id node2

[itwise@node2]$ ssh-copy-id node3

[itwise@node2]$ ssh-copy-id node4

注意

还需要在node3采用itwise账号配置一下无密登录到node2、node3、node4服务器上。

还需要在node4上采用itwise账号配置一下无密登录到node2、node3、node4服务器上。

还需要在node2上采用root账号,配置一下无密登录到node2、node3、node4;

<think>好的,我现在需要帮助用户解决SSH登录遇到的权限被拒绝的问题。用户提到了“ssh login permission denied error”,我需要结合提供的引用资料来找出可能的原因和解决方法。 首先,我应该回忆常见的SSH登录问题。通常,权限被拒绝可能有几个原因:公钥认证失败、SSH服务未运行、用户权限问题、防火墙设置或配置文件错误。根据用户提供的引用,有几个引用涉及到公钥、ssh-agent、权限设置SSH服务器安装。 引用[2]提到连接被拒绝,端口22的问题,可能是SSH服务未运行。用户遇到的错误是“Permission denied”,而引用[2]中的情况是“Connection refused”,这可能不同,但需要确认SSH服务是否运行。例如,检查openssh-server是否安装并启动。 引用[3]讨论了ssh-agent管理多个密钥的情况。如果用户有多个密钥,可能没有正确添加私钥到代理,或者使用了错误的密钥。比如,执行ssh-add命令添加正确的私钥,或者删除旧密钥可能解决。 引用[4]指出authorized_keys或用户目录权限过松的问题。OpenSSH对文件权限敏感,如果.ssh目录或authorized_keys文件的权限设置不正确,会导致拒绝连接。需要检查并修改权限为700(目录)和600(文件)。 引用[5]提到了Cygwin环境下/etc/passwd文件的问题,但用户可能不是在Cygwin下,不过如果是类似环境,可能需要检查用户配置是否存在。 另外,引用[1]和[3]都涉及GitHub的SSH连接问题,但用户的问题更普遍,可能不仅限于GitHub。但同样需要检查公钥是否正确配置在服务器上的authorized_keys中。 可能的解决步骤包括: 1. 确认SSH服务正在运行,端口22开放。 2. 检查客户端是否使用正确的私钥,并添加到ssh-agent。 3. 验证服务器上的authorized_keys文件权限是否正确。 4. 检查用户目录和.ssh目录的权限。 5. 确保公钥正确添加到服务器的authorized_keys中。 6. 检查SELinux或防火墙设置是否阻止连接。 7. 查看SSH服务的日志(如/var/log/auth.log)获取更多错误信息。 需要将这些步骤按照逻辑顺序排列,并参考提供的引用资料中的具体解决方案。例如,引用[4]提到的权限问题,需要指导用户执行chmod命令;引用[2]中的openssh-server安装可能需要用户安装并启动服务。 另外,用户可能同使用多个密钥,导致SSH客户端发送了错误的密钥,这候需要配置~/.ssh/config文件指定对应的密钥,如引用[3]中提到的多账户情况。 可能还需要检查服务器端的sshd配置,例如是否允许密码认证或公钥认证。但用户的问题是关于公钥认证失败,所以重点在密钥和权限方面。 总结,需要分步骤检查服务状态、密钥配置、文件权限、SSH代理、以及日志信息,结合用户提供的引用资料中的解决方法,给出具体的解决步骤和相关命令。</think>### SSH登录权限被拒绝问题的逐步解决方案 #### 1. 确认SSH服务状态 - **检查服务是否运行**: 服务器端执行 `systemctl status sshd` 查看SSH服务状态。若未运行,使用 `sudo systemctl start sshd` 启动服务[^2]。 - **验证端口开放**: 使用 `netstat -tuln | grep 22` 确认端口22处于监听状态。若未开放,需检查防火墙设置或重新配置SSH服务。 #### 2. 检查公钥配置 - **客户端密钥验证**: 确保本地私钥(如 `~/.ssh/id_rsa`)与服务器 `~/.ssh/authorized_keys` 中的公钥匹配。 ```bash # 本地生成密钥对(若无) ssh-keygen -t rsa -b 4096 # 复制公钥到服务器 ssh-copy-id -i ~/.ssh/id_rsa.pub user@hostname ``` - **多密钥管理**: 若使用多个密钥(如GitHub多账户[^3]),通过 `ssh-add` 管理代理: ```bash # 添加指定私钥到代理 ssh-add ~/.ssh/custom_key # 查看已加载密钥 ssh-add -l ``` #### 3. 修复文件权限问题 - **目录与文件权限**: OpenSSH要求严格权限设置,执行以下命令: ```bash # 服务器端修复 chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys # 客户端修复 chmod 600 ~/.ssh/* ``` 若用户主目录权限过松(如777),需调整为 `750`[^4]。 #### 4. 检查SSH代理状态 - **清除旧密钥缓存**: 若代理中缓存错误密钥,会导致认证失败: ```bash # 删除所有缓存的密钥 ssh-add -D # 重新添加正确密钥 ssh-add ~/.ssh/your_private_key ``` #### 5. 分析日志定位问题 - **查看服务端日志**: 在服务器端检查 `/var/log/auth.log` 或 `/var/log/secure`,过滤关键字 `sshd` 和 `user`: ```bash tail -f /var/log/auth.log | grep "sshd.*user" ``` 常见错误如 `Authentication refused: bad ownership or modes` 表示权限问题[^4]。 #### 6. 其他潜在原因 - **SELinux/AppArmor限制**:禁用SELinux测试:`setenforce 0`,若问题解决则需调整安全策略。 - **用户目录缺失**: Cygwin等环境中,若 `/etc/passwd` 未正确生成用户,执行 `mkpasswd.exe -l > /etc/passwd`[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值