目录
问题来源
工作需要新连接一台机器,为了方便连接,习惯性的去配置公钥连接,然而,配置完成后使用公钥登录方式依然需要输入密码,本地和服务器的配置翻了一遍,看起来都是对的啊,神奇~~
特别说明
本人PC使用linux系统,所以部分命令和界面等与windows有所差异,但是解决问题的关键点是通用的,见谅!
过程梳理
生成公钥
使用ssh-keygen工具生成密钥对
配置密钥使用
编辑本机密钥配置文件
vi ~/.ssh/config
添加如下内容
# 这个就是个名字连接的时候用
Host host.demo
# 主机地址
HostName 192.168.1.100
# 登录使用的用户
User root
# 本地使用的私钥文件
IdentityFile /home/guan/.ssh/demo_rsa
IdentityFile要特别注意,这里使用的是私钥,我干过一次手欠写了个.pub然后查了半天
登录服务器
登录服务器并上传公钥,注意是公钥哈,别把私钥丢上去了
sh-copy-id -i ~/.ssh/demo_rsa.pub root@192.168.1.100
输完密码,就登录到了机器上,并且你的公钥会被加到authorized_keys文件中
开启公钥登录
编辑sshd配置文件
vi /etc/ssh/sshd_config
开启公钥登录
PubkeyAuthentication yes
重启sshd服务
systemctl restart sshd
试一波
ssh host.demo
还是要输入密码,问题出现了!!!
debug一下
ssh -vvv host.demo
并没有什么有价值的发现~~~
排查文件权限
由于之前遇到过认证文件权限过于开放不能使用ssh登录的问题,决定排查一下相关文件的权限找了一台之前配置过能正常登录的机器进行比对
ll ~/.ssh
能登录的机器
-rw-------. 1 root root 567 Jun 8 2022 authorized_keys
有问题的机器
-rw------- 1 root root 1328 May 15 2021 authorized_keys
看起来没毛病啊
再来
la ~/.ssh
能登录的机器
drwx------. 2 root root 4096 Dec 14 09:08 .
dr-xr-x---. 6 root root 4096 Dec 10 01:57 ..
-rw-------. 1 root root 567 Jun 8 2022 authorized_keys
有问题的机器
drwx------ 2 root root 161 Dec 15 2022 .
drwxrwxrwx. 21 root root 4096 Dec 3 2021 ..
-rw------- 1 root root 1328 Dec 10 2022 authorized_keys
上级目录的权限有差异,这也有影响
验证
因为不是生产环境的机器,直接搞,如果是生产建议先问问相关的同学有没有什么特殊的原因必须给那么高的权限
chomd 700 /root/
可以使用公钥登录了
结论
经过一番进一步的验证,得出以下结论
配置公钥登录对服务器关键目录和文件的权限要求如下:
- .ssh目录不得高于700
- ahthorized_keys文件不得高于700
- .ssh的上级目录不得高于755
当这些条件同时满足时,才能使用公钥登录