不小心在搞vsftpd时候执行了"chmod -R 777 /"的命令,直接修改了所有文件的权限。瞬间爆炸,其实Linux 中的每一个文件或目录都包含有访问权限,许多功能配置文件需要特定的权限才能工作。

比如SSH,/.ssh目录下的每一个文件都需要特定的权限和拥有者才可以使用,否则使用SSH连接服务器时就会出现"Permission denied (publickey,gssapi-keyex,gssapi-with-mic)."的错误,
SSH测试本地连接失败

关于Permission denied (publickey,gssapi-keyex,gssapi-with-mic).这个错误的解决方法,网上有很多,但是都有点误导人。总结了一下排查方法就是下面三点:

  1. 首先在服务器本地测试ssh 127.0.0.1,如果可以那就是防火墙的问题。网上很多解决方法,这里不在写,很好解决。

  2. 若本地连接有问题,首先打开配置文件sshd_config寻找问题(vim /etc/ssh/sshd_config)。这里简单总结几个必须要修改的配置:

RSAAuthentication yes   
PubkeyAuthentication yes   #这两项为打开公钥模式
AuthorizedKeysFile     .ssh/authorized_keys   #配置公钥记录文件
PasswordAuthentication yes  #打开密码验证模式
  1. 如果上述修改之后测试还不行,那就说明是文件权限的问题(本人就是由于误改了系统文件的权限)。如果是这样。解决方法就是找到一个完全相同配置的Linux系统,复制其系统目录下的systemp.bak文件,这个文件记录了所有的文件权限。
scp root@目标机器IP:system.bak文件路径  本地存放system.bak路径

然后执行命令:

setfacl --restore=systemp.bak

最后重启系统方能恢复正常。当然如果不想那么麻烦,直接重装系统。

最后给自己说一句,切记,Linux下的文件不能随便修改权限。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐