问题描述

1.在将本地博客部署到服务器时,按照步骤首先创建密钥,其次就是将生成的公钥粘贴到服务器文件中vim .ssh/authorized_keys。按照教程来讲已经成功了,但在实际测试时发现我们丢在服务器在文件中的公钥只起到连接的作用,在上传文章时仍需要填写Git用户的密码,对于我这种懒人来说这太痛苦了,必须要实现免密登录与上传
2.造成免密登录失效的原因是公钥文件权限导致的无法远程使用公钥登录而转为密码登录
3.关于如何排查出是文件目录权限导致的免密登录失效可以看看这位老哥的博客

查看公钥目录权限

检查ssh目录权限和属主

1
2
3
4
5
6
cd /home
cd [Username]
ls
# 查看/home/Gan1Ser路径的权限,并查看属主
# 属主需要是用户
ll -a

修改ssh目录权限和属主

需要的权限的是700,如果不是700,执行以下命令修改

1
chmod 700 .ssh

需要的属组是Git用户,如果不是,执行以下命令修改

1
2
# 这里Group换成你用户的属组
chgrp [Group] .ssh

需要的属主是Git用户,如果不是,执行以下命令修改

1
2
# 这里Username换成你的用户名
chown 用户名 /home/[Username]

属主

查看钩子文件权限

检查authorized_keys

1
2
cd .ssh/
ll -a

修改authorized_keys权限

需要的权限的是644,如果不是644,执行以下命令修改

1
chmod 644 authorized_keys

钩子文件

查看Username权限

检查Username权限

1
ll -a /home/

修改Username权限

需要的权限是755或者700,其他用户没有w权限即可

1
2
chmod 755 /home/[Username]
chmod 700 /home/[Username]

用户

总结排查方法

检查项 操作示例 说明
.ssh目录的属主、属组是否为要登陆的用户与用户组 ll -a /home/[Username]/ Username为用户名,下同
.ssh目录的权限是否为 700 ll -a /home/[Username]/
.ssh目录下authorized_keys的权限是否为644 ll -a /home/[Username]/.ssh/
[Username]目录的权限是否为755 ll -a /home/ 700也可以,确保其他人没有w权限