Linux ssh 免密失效
sudo chmod -R 777 /home/xxx
sudo chown -R xxx:xxx /home/xxx
为什么我输入这两条指令后,ssh免密失效了?
当你使用 sudo chmod -R 777 /home/xxx
和 sudo chown -R xxx:xxx /home/xxx
这两条指令后,可能会导致 SSH 免密登录失效的原因有以下几个方面:
-
权限问题:
-chmod -R 777 /home/xxx
将/home/xxx
目录及其所有子目录和文件的权限设置为rwxrwxrwx(777),这意味着任何人都可以读取、写入和执行这些文件。这可能会导致 SSH 密钥文件的权限过于宽松,SSH 服务出于安全考虑会拒绝使用这些密钥。 -
所有权问题:
-chown -R xxx:xxx /home/xxx
将/home/xxx
目录及其所有子目录和文件的所有权更改为了xxx
用户和xxx
组。如果之前 SSH 密钥文件的所有权不是xxx
,那么更改所有权可能会影响 SSH 服务的正常使用。 -
SSH 密钥文件权限:
- SSH 密钥文件(如~/.ssh/id_rsa
和~/.ssh/authorized_keys
)通常需要特定的权限设置。例如,~/.ssh
目录通常需要权限700
,而~/.ssh/authorized_keys
文件通常需要权限600
。如果你将这些文件的权限设置为777
,SSH 服务可能会拒绝使用它们。
解决方法
-
恢复适当的权限:
- 确保~/.ssh
目录的权限为700
,~/.ssh/authorized_keys
文件的权限为600
。
bash sudo chmod 700 /home/xxx/.ssh sudo chmod 600 /home/xxx/.ssh/authorized_keys
-
检查所有权:
- 确保~/.ssh
目录和文件的所有权属于xxx
用户和xxx
组。
bash sudo chown -R xxx:xxx /home/xxx/.ssh
-
验证 SSH 配置:
- 确保 SSH 配置文件/etc/ssh/sshd_config
中的设置没有被更改,特别是与密钥认证相关的设置。 -
重启 SSH 服务:
- 重启 SSH 服务以应用更改。
bash sudo systemctl restart sshd
通过以上步骤,你应该能够恢复 SSH 免密登录功能。如果问题仍然存在,请检查 SSH 服务日志(通常在 /var/log/auth.log
或 /var/log/secure
)以获取更多信息。