centos8 重置密码 https://zhuanlan.zhihu.com/p/288001671 centos7 重置密码 https://blog.csdn.net/weixin_45942827/article/details/111603820?ops_request_misc=&request_id=&biz_id=102&utm_term=%E7%99%BB%E9%99%86%E8%99%9A%E6%8B%9F%E6%9C%BA%E6%98%BE%E7%A4%BA%E5%AF%86%E7%A0%81%E6%B2%A1%E6%9C%89%E5%A5%8F%E6%95%88&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-111603820.142
chmod: changing permissions of ‘authorized_keys’: Operation not permitted
解决办法为:
|
|
一般来说,root 用户的权限是最大了,难道还有 root 用户操作不了的文件?
后来经过查找和学习,chmod 的底层实现是 chattr 命令,用此命的功能更为强大,甚至可以锁定文件,即使 root 用户也操作不了此文件。
修改不了也不足为怪了!
然后执行下面的命令查看当前文件属性,可以发现有 i 和 a 两个属性:
lsattr authorized_keys 1
说明此时的文件是被锁定的,任何用户都是修改不了的,那么我们就去掉这两个属性:
chattr -ia authorized_keys 1 减号(-)代表去掉的意思,反之加号(+)代表增加的意思。
我们再执行写入公钥的命令:
|
|
但是发现设置完之后,依然无法免密登录,这个原因是因为权限
sshd 为了安全,对属主的目录和文件权限有所要求。如果权限 不对,则 ssh 的免密码登陆不生效。 d) 服务器 B 上 SELinux 关闭为 disabled,可以使用命令修改 setenforce 0 ,查看状态的命令为 getenforce 或者 查看/etc/selinux/config 文件中是否是 disabled
e) 有可能是 StrictModes 问题
编辑 vi /etc/ssh/sshd_config
找到#StrictModes yes 改成 StrictModes no
f) 有可能是 PubkeyAuthentication 问题
编辑 vi /etc/ssh/sshd_config
找到、:改成 yes
如果还不行,可以在服务器 A 上用 ssh -vvv 机器 B 的 ip 查看详情,根据输出内容具体问题具体分析了
3. SSH 免密码失败原因定位分析
a) 服务器 B 上.ssh 目录的权限必须是 700
b) 服务器 B 上.authorized_keys 文件权限必须是 600 或者 644
c) 服务器 B 上用户家目录文件权限必须是 700,比如用户名是 aischang,则/home/aischang 这个目录权限必须是 700
如果不是 700,在服务器 A 上查看/var/log/secure 文件会报错