【问题解决】解决Linux配置SSH公钥后仍然需要输入密码的问题

目录

问题来源

特别说明

过程梳理

生成公钥

配置密钥使用

登录服务器

开启公钥登录

试一波

排查文件权限

能登录的机器

有问题的机器

再来

能登录的机器

有问题的机器

验证

结论


问题来源

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

特别说明

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

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

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
配置SSH公钥和私钥,您可以按照以下步骤进行操作: 1. 生成SSH密钥对: 打开终端,并运行以下命令来生成密钥对: ``` ssh-keygen -t rsa -b 4096 ``` 您可以选择不同的加密算法和密钥长度,但RSA算法和4096位长度是常见的选择。您将被要求提供密钥文件的保存位置和一个可选的密码短语。 2. 添加公钥到远程服务器: 将公钥添加到您要连接的远程服务器上。您可以使用以下命令将公钥复制到服务器上: ``` ssh-copy-id user@server_ip ``` 替换 "user" 为您在远程服务器上的用户名,"server_ip" 为服务器的IP地址或域名。这将自动将公钥添加到远程服务器的`~/.ssh/authorized_keys` 文件中。 3. 配置SSH客户端: 打开SSH客户端配置文件 `~/.ssh/config`(如果不存在则创建): ``` nano ~/.ssh/config ``` 添加以下内容来配置您的私钥文件路径: ``` Host server_alias HostName server_ip User user IdentityFile /path/to/private_key ``` 替换 "server_alias" 为您给服务器取的别名,"server_ip" 为服务器的IP地址或域名,"user" 为远程服务器上的用户名,"/path/to/private_key" 为您生成的私钥文件的路径。 4. 连接远程服务器: 使用以下命令连接到远程服务器: ``` ssh server_alias ``` 替换 "server_alias" 为您在SSH配置文件中指定的别名。 这样,您就成功配置SSH公钥和私钥。下次连接远程服务器时,您将不再需要输入密码,而是使用私钥进行身份验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码司机

源于社区,回馈社区,致敬技术

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值