目录

问题来源

特别说明

过程梳理

生成公钥

配置密钥使用

登录服务器

开启公钥登录

试一波

排查文件权限

能登录的机器

有问题的机器

再来

能登录的机器

有问题的机器

验证

结论


问题来源

工作需要新连接一台机器,为了方便连接,习惯性的去配置公钥连接,然而,配置完成后使用公钥登录方式依然需要输入密码,本地和服务器的配置翻了一遍,看起来都是对的啊,神奇~~

特别说明

本人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/

可以使用公钥登录了

结论

经过一番进一步的验证,得出以下结论

配置公钥登录对服务器关键目录和文件的权限要求如下:

  1. .ssh目录不得高于700
  2. ahthorized_keys文件不得高于700
  3. .ssh的上级目录不得高于755

当这些条件同时满足时,才能使用公钥登录