Linux服务器配置SSH免密码登录后,登录仍提示输入密码(一次真实的问题排查解决记录)

news2024/11/26 9:31:25

我们知道两台Linux服务器机器之间如果使用ssh命令登录或scp/rsync命令传输文件每一次都需要输入用户名相对应的密码,如果要免密码,则需要对两台Linux服务器机器之间进行SSH互信。

一.SSH介绍

1.SSH互信原理

虽然这是废话,也希望大家了解一下。

SSH(Secure Shell)是一种安全的传输协议,它可以让Linux系统中的服务器和客户端之间进行安全可靠的通讯,它常被用于在本地网络中的多台计算机之间实现远程登录,文件传输和系统管理。

SSH使用“加密”的传输方式,以保证客户端和服务器之间的通讯安全。具体而言,SSH使用加密技术(默认加密技术:rsa,加密位:2048位)将用户数据和控制指令加密,以保护数据不被第三方拦截。
SSH可以验证客户端的身份,确保只有授权的用户才能访问服务器。

要在Linux系统中运行SSH,需要两个软件:一个是服务器端的软件,另一个是客户端的软件。服务器端的软件叫做OpenSSH-Server,主要实现SSH服务器功能。它可以处理SSH消息并执行用户指令,以实现远程登录功能。客户端的软件叫做SSH-Client,会根据服务器端提供的信息将用户指令加密,并且可以认证服务器的身份。

2.SSH RPM包

OpenSSH所对应的RPM包共有5个,

[root@rhel77 ~]# ls /mnt/Packages/openssh*
/mnt/Packages/openssh-7.4p1-21.el7.x86_64.rpm
/mnt/Packages/openssh-askpass-7.4p1-21.el7.x86_64.rpm
/mnt/Packages/openssh-clients-7.4p1-21.el7.x86_64.rpm
/mnt/Packages/openssh-keycat-7.4p1-21.el7.x86_64.rpm
/mnt/Packages/openssh-server-7.4p1-21.el7.x86_64.rpm

说明如下:

OpenSSH-RPM Packages
Packages名说明
openssh-7.4p1-21.el7.x86_64.rpmopenssh核心文件
openssh-askpass-7.4p1-21.el7.x86_64.rpm⽀持对话框窗⼝ 显示 X系统
openssh-clients-7.4p1-21.el7.x86_64.rpm客户端软件包
openssh-keycat-7.4p1-21.el7.x86_64.rpmopenssh公钥,私钥文件
openssh-server-7.4p1-21.el7.x86_64.rpm服务器端软件包

3. SSH秘钥文件介绍

目录路径:/root/.ssh/

[root@rhel77 .ssh]# cd ../.ssh/
[root@rhel77 .ssh]# pwd
/root/.ssh
[root@rhel77 .ssh]# ls -la
total 28
drwx------   2 root root   80 Jun  8 15:32 .
drwxrwxrwx. 17 root root 8192 Jun  9 08:33 ..
-rw-------   1 root root  395 Jun  8 15:32 authorized_keys
-rw-------   1 root root 1675 Jun  8 15:18 id_rsa
-rw-r--r--   1 root root  393 Jun  8 15:18 id_rsa.pub
-rw-r--r--   1 root root  346 Jun  8 15:31 known_hosts
[root@rhel77 .ssh]# 

其中:

id_rsa:私钥,相当于"锁"。文件权限:600,不能更改。

id_rsa.pub:公钥,相当于"钥匙"。文件权限:644,不能更改。

authorized_keys:认证文件,记录"别人"(即:对端)给你的公钥“钥匙”。文件权限:600,不能更改。

known_hosts:“指纹”文件,记录首次SSH互信认证"别人"(即:对端)留给你的“指纹”信息。文件权限:600,不能更改。

4.ssh配置文件sshd_config

目录路径:/etc/ssh

sshd日志默认保存在/var/log/secure中

(cat /etc/ssh/sshd_config):

SyslogFacility AUTHPRIV

(cat /etc/rsyslog.conf):

authpriv.*                                              /var/log/secure

二.问题重现

1.环境信息

VMware CentOS7.9(IP:192.168.10.135)、RHEL7.7(IP:192.168.10.110)

防火墙及selinux关闭,参考(Chapter1):

Linux常规基础配置_小黑要上天的博客-CSDN博客

2.两台机器实现openssh rpm安装

-->RHEL7.7(ip:192.168.10.110)机器

[root@rhel77 /]# yum install -y openssh*
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
rhel7.7                                                                             | 2.8 kB  00:00:00     
Package openssh-server-7.4p1-21.el7.x86_64 already installed and latest version
Package openssh-7.4p1-21.el7.x86_64 already installed and latest version
Package openssh-clients-7.4p1-21.el7.x86_64 already installed and latest version
Package openssh-askpass-7.4p1-21.el7.x86_64 already installed and latest version
Package openssh-keycat-7.4p1-21.el7.x86_64 already installed and latest version
Nothing to do
[root@rhel77 /]# 

-->CentOS7.9(ip:192.168.10.135)机器

[root@centos79 ~]# yum install -y openssh*
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.bupt.edu.cn
 * extras: mirror.lzu.edu.cn
 * updates: mirror.lzu.edu.cn
base                                                                                | 3.6 kB  00:00:00     
docker-ce-stable                                                                    | 3.5 kB  00:00:00     
extras                                                                              | 2.9 kB  00:00:00     
updates                                                                             | 2.9 kB  00:00:00     
软件包 openssh-cavs-7.4p1-22.el7_9.x86_64 已安装并且是最新版本
软件包 openssh-server-7.4p1-22.el7_9.x86_64 已安装并且是最新版本
软件包 openssh-7.4p1-22.el7_9.x86_64 已安装并且是最新版本
软件包 openssh-clients-7.4p1-22.el7_9.x86_64 已安装并且是最新版本
软件包 openssh-askpass-7.4p1-22.el7_9.x86_64 已安装并且是最新版本
软件包 openssh-ldap-7.4p1-22.el7_9.x86_64 已安装并且是最新版本
软件包 openssh-server-sysvinit-7.4p1-22.el7_9.x86_64 已安装并且是最新版本
软件包 openssh-keycat-7.4p1-22.el7_9.x86_64 已安装并且是最新版本
无须任何处理
[root@centos79 ~]# 

3.两台机器机器实现ssh互信

-->RHEL7.7(ip:192.168.10.110)机器

命令:

cd ~

ssh-keygen

cd .ssh/

ls

ssh-copy-id 192.168.10.135

[root@rhel77 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #强烈建议直接回车使用默认路径
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase): #密钥的密码短语(建议留空则直接回车)
Enter same passphrase again:            #密钥的密码短语确认(建议留空则直接回车)
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:jHTGpurRdAzUvx4haQJJRFR5bZiS3j5TNyuB85/SXWc root@rhel77
The key's randomart image is:
+---[RSA 2048]----+
|   ==oo+ +       |
|    o.+.= o      |
|     oo+==       |
|     .oXB = o    |
|      ++S= = o   |
|     + .+ = .   E|
|    o .  + = o o.|
|   . .    o + .  |
|    .      .     |
+----[SHA256]-----+
[root@rhel77 ~]# cd .ssh/
[root@rhel77 .ssh]# ls
id_rsa  id_rsa.pub  known_hosts
[root@rhel77 .ssh]# ssh-copy-id 192.168.10.135
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.10.135's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '192.168.10.135'"
and check to make sure that only the key(s) you wanted were added.

[root@rhel77 .ssh]# 

-->CentOS7.9(ip:192.168.10.135)机器

命令:

cd ~

ssh-keygen

cd .ssh/

ls

ssh-copy-id 192.168.10.110

[root@centos79 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #同上
Enter passphrase (empty for no passphrase): #同上
Enter same passphrase again: #同上
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:nK6khtCnoJB2o1aVfqVlTNpJHMug4QQ/3orcPqAgda4 root@centos79
The key's randomart image is:
+---[RSA 2048]----+
|   ..o ....      |
|    + o o+.      |
|     =. *o.      |
|  . oooo O       |
| + oo. .S        |
|B.o==..+         |
|*o=Booo .        |
|.+E o+ .         |
|.  ...o          |
+----[SHA256]-----+
[root@centos79 ~]# cd .ssh/
[root@centos79 .ssh]# ls
authorized_keys  id_rsa  id_rsa.pub  known_hosts
[root@centos79 .ssh]# ssh-copy-id 192.168.10.110
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.10.110's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '192.168.10.110'"
and check to make sure that only the key(s) you wanted were added.

[root@centos79 .ssh]# 

4.ssh互信验证-问题重现

-->从RHEL7.7(ip:192.168.10.110)机器 ssh 到 CentOS7.9(ip:192.168.10.135)机器

-->从CentOS7.9(ip:192.168.10.135)机器 ssh 到 RHEL7.7(ip:192.168.10.110)机器

三. 问题解决梳理

1.两台机器文件权限验证(id_rsa,id_rsa.pug,authorized_keys,known_hosts)

-->RHEL7.7(ip:192.168.10.110)机器

[root@rhel77 /]# cd 
[root@rhel77 ~]# cd .ssh/
[root@rhel77 .ssh]# pwd
/root/.ssh
[root@rhel77 .ssh]# ls -l
total 16
-rw------- 1 root root  395 Jun  9 09:26 authorized_keys
-rw------- 1 root root 1679 Jun  9 09:26 id_rsa
-rw-r--r-- 1 root root  393 Jun  9 09:26 id_rsa.pub
-rw-r--r-- 1 root root  176 Jun  9 09:27 known_hosts
[root@rhel77 .ssh]# 

结论:文件权限无误

-->CentOS7.9(ip:192.168.10.135)机器

[root@centos79 .ssh]# cd
[root@centos79 ~]# cd .ssh/
[root@centos79 .ssh]# pwd
/root/.ssh
[root@centos79 .ssh]# ls -l
总用量 16
-rw------- 1 root root  393 6月   9 09:27 authorized_keys
-rw------- 1 root root 1679 6月   9 09:23 id_rsa
-rw-r--r-- 1 root root  395 6月   9 09:23 id_rsa.pub
-rw-r--r-- 1 root root  176 6月   9 09:26 known_hosts
[root@centos79 .ssh]# 

结论:文件权限无误

2.两台机器.ssh目录权限验证

-->RHEL7.7(ip:192.168.10.110)机器

[root@rhel77 ~]# pwd
/root
[root@rhel77 ~]# ls -ld .ssh/
drwx------ 2 root root 80 Jun  9 09:27 .ssh/
[root@rhel77 ~]# 

结论:.ssh目录权限为700,权限无误

-->CentOS7.9(ip:192.168.10.135)机器

[root@centos79 ~]# pwd
/root
[root@centos79 ~]# ls -ld .ssh/
drwx------ 2 root root 80 6月   9 09:27 .ssh/
[root@centos79 ~]# 

结论:.ssh目录权限为700,权限无误

3.两台机器更改/etc/ssh/sshd_config文件配置

添加如下信息:

RSAAuthentication yes               #允许RSA密钥
PubkeyAuthentication yes          #启用公告密钥配对认证方式

################################################

添加位置:

RSAAuthentication yes
PubkeyAuthentication yes

# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile      .ssh/authorized_keys

################################################

重启sshd,发现问题仍旧存在。

命令:

systemctl restart sshd

systemctl status sshd

4.问题点定位

最后,通过查看/var/log/secure,发现了问题的点

命令:

tail /var/log/secure -n 20

-->RHEL7.7(ip:192.168.10.110)机器

Jun  9 10:17:28 rhel77 sshd[12271]: Server listening on :: port 22.
Jun  9 10:17:28 rhel77 polkitd[948]: Unregistered Authentication Agent for unix-process:12264:668614 (system bus name :1.316, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale en_US.UTF-8) (disconnected from bus)
Jun  9 10:24:34 rhel77 sshd[12868]: Authentication refused: bad ownership or modes for directory /root
Jun  9 10:24:36 rhel77 sshd[12868]: Connection closed by 192.168.10.135 port 36168 [preauth]
[root@rhel77 ~]# 

-->CentOS7.9(ip:192.168.10.135)机器

Jun  9 10:16:58 centos79 polkitd[728]: Unregistered Authentication Agent for unix-process:5517:669130 (system bus name :1.203, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale zh_CN.UTF-8) (disconnected from bus)
Jun  9 10:17:33 centos79 sshd[5534]: Authentication refused: bad ownership or modes for directory /root
Jun  9 10:17:37 centos79 sshd[5534]: Connection closed by 192.168.10.110 port 38882 [preauth]
Jun  9 10:24:02 centos79 sshd[5599]: Authentication refused: bad ownership or modes for directory /root
Jun  9 10:24:03 centos79 sshd[5599]: Connection closed by 192.168.10.110 port 38884 [preauth]
[root@centos79 ~]# 

问题点:

-->RHEL7.7(ip:192.168.10.110)机器

Jun  9 10:24:34 rhel77 sshd[12868]: Authentication refused: bad ownership or modes for directory /root


-->CentOS7.9(ip:192.168.10.135)机器

Jun  9 10:24:02 centos79 sshd[5599]: Authentication refused: bad ownership or modes for directory /root

通过google搜索排查定位,被告知:/root目录权限过大(排查发现root目录权限为777),最多(建议)设置为700权限

/root目录权限

更改前:

-->RHEL7.7(ip:192.168.10.110)机器

[root@rhel77 ~]# cd /
[root@rhel77 /]# pwd
/
[root@rhel77 /]# ls -ld root
drwxrwxrwx. 17 root root 8192 Jun  9 08:33 root
[root@rhel77 /]# 

-->CentOS7.9(ip:192.168.10.135)机器

[root@centos79 ~]# cd /
[root@centos79 /]# pwd
/
[root@centos79 /]# ls -ld root
drwxrwxrwx. 25 root root 4096 6月   9 09:37 root
[root@centos79 /]# 

权限更改,更改后:

-->RHEL7.7(ip:192.168.10.110)机器

[root@rhel77 /]# pwd
/
[root@rhel77 /]# chmod 700 root/
[root@rhel77 /]# ls -ld root
drwx------. 17 root root 8192 Jun  9 08:33 root
[root@rhel77 /]# 

-->CentOS7.9(ip:192.168.10.135)机器

[root@centos79 /]# pwd
/
[root@centos79 /]# chmod 700 root
[root@centos79 /]# ls -ld root
drwx------. 25 root root 4096 6月   9 09:37 root
[root@centos79 /]# 

5.ssh互信登录验证

-->RHEL7.7(ip:192.168.10.110)机器

[root@rhel77 /]# ssh 192.168.10.135
Last login: Fri Jun  9 09:55:34 2023 from rhel77

IPAddress: 	172.17.0.1
Memory Used: 	17.9%
Swap Used: 	0%
Disk Used: 	27%
Disk Size: 	38G
Services: 	46
系统内核: 	3.10.0-1160.90.1.el7.x86_64
yum源已配置,能正常使用
[root@centos79 ~]# hostname
centos79
[root@centos79 ~]# exit
logout
Connection to 192.168.10.135 closed.
[root@rhel77 /]# 

-->CentOS7.9(ip:192.168.10.135)机器

[root@centos79 ~]# ssh 192.168.10.110
Last login: Fri Jun  9 10:33:32 2023 from gateway

IPAddress: 	192.168.10.110
Cpu Used: 	1.00%
Memory Used: 	5.3%
Swap Used: 	0%
Disk Used: 	8%
Disk Size: 	69G
Services: 	40
system core: 	3.10.0-1062.el7.x86_64
yum already installation
[root@rhel77 ~]# hostname
rhel77
[root@rhel77 ~]# exit
登出
Connection to 192.168.10.110 closed.
[root@centos79 ~]# 

至此,问题解决。

四.总结梳理

Linux服务器之前进行ssh互信免密登录时,文件及目录的权限有严格控制,不能过渡授权,主要点:

1./root目录权限为:700

2..ssh目录权限为:700

3.文件权限(id_rsa,id_rsa.pug,authorized_keys,known_hosts):

-->id_rsa:私钥,相当于"锁"。文件权限:600,不能更改。

-->id_rsa.pub:公钥,相当于"钥匙"。文件权限:644,不能更改。

-->authorized_keys:认证文件,记录"别人"(即:对端)给你的公钥“钥匙”。文件权限:600,不能更改。

-->known_hosts:“指纹”文件,记录首次SSH互信认证"别人"(即:对端)留给你的“指纹”信息。文件权限:600,不能更改。

4.养成看ssh服务日志/var/log/secure的习惯

以上是我的一次真实的Linux服务器配置SSH免密码登录后,登录仍提示输入密码的问题排查解决记录。希望各位有所帮助。

创作不易,如果对你有所帮助或喜欢,请一键三连!

谢谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/629728.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Rust每日一练(Leetday0026) 最小覆盖子串、组合、子集

目录 76. 最小覆盖子串 Minimum Window Substring 🌟🌟🌟 77. 组合 Combinations 🌟🌟 78. 子集 Subsets 🌟🌟 🌟 每日一练刷题专栏 🌟 Rust每日一练 专栏 Gola…

HTML table表格详解

一、表格属性 表格属性 用法 border 代表表格边框厚度 width height 表格宽高 align table tr td 设置水平方向对齐方式 默认值left center right cellspacing 单元格到单元格距离 cellpadding 单元格文字到单元格边框距离 bgcolor 表格背景颜色 table tr td 都可以…

Win11 RTX 4090显卡深度学习环境配置(Nvidia显卡驱动、CUDA11.8.0)

Win11 RTX 4090显卡深度学习环境配置(Nvidia显卡驱动、CUDA11.8.0) 1. 简介2. 安装Anaconda3. 安装Pycharm4. 安装CUDA11.8.04.1 安装4.2 测试4.3 CUDA卸载 5. PyTorch安装5.1 PyTorch安装5.2 测试5.2.1 测试torch:5.2.2 测试CUDA&#xff1a…

chatgpt赋能python:切割字符串的Python技巧及实现方法

切割字符串的Python技巧及实现方法 在Python中操作字符串是比较常见的技巧,而对于需要将字符串切割成不同的元素,Python也提供了相应的方法。 split方法 split方法是Python字符串类中最常用的方法之一,它可以根据给定的分隔符对字符串进行…

学习HCIP的day.11

目录 十一、BGP的属性 1、权重属性 2、本地优先级 3、as-path 4、起源属性 5、MED --多出口的鉴别属性 十二、BGP选路规则 十三、BGP的社团属性 十四、BGP的在MA网络中的下一跳问题 五、BGP的认证 十一、BGP的属性 BGP协议在选路时,先对比属性&#xf…

在Spring Boot项目中连接SQL Server的几种方式

在Spring Boot项目中连接SQL Server 一. 使用Microsoft官方的SQL Server JDBC驱动连接:1. 依赖配置:2. YAML配置: 二. 使用第三方的jTDS驱动连接:1. 依赖配置:2. YAML配置: 三. 使用Microsoft提供的Spring …

动态网站Servelt基础

文章目录 一、Servlet基础(一)Servlet概述1、Servlet是什么2、Servlet容器3、Servlet应用程序的体系结构 (二)Servlet的特点1、功能强大2、可移植3、性能高效4、安全性高5、可扩展 (三)Servlet接口1、Servl…

chatgpt赋能python:Python中如何实现内循环到外循环

Python中如何实现内循环到外循环 Python是一种广泛使用的编程语言,其文本解析和数据结构操作灵活,让Python编程变得非常简单。在Python编程中,内循环到外循环是常见的问题,因此本文将着重介绍这个问题。 什么是内循环和外循环 …

「SQL面试题库」 No_93 广告效果

🍅 1、专栏介绍 「SQL面试题库」是由 不是西红柿 发起,全员免费参与的SQL学习活动。我每天发布1道SQL面试真题,从简单到困难,涵盖所有SQL知识点,我敢保证只要做完这100道题,不仅能轻松搞定面试&#xff0…

MyCat Docker 搭建与测试

mycat 是mysql分库分表的中间件,由java编写,本次进行mysql、mycat 的docker搭建,理解mycat的原理与特性。 一、mysql docker 搭建 这里启动两个实例: docker run -itd --name mysql1 -p 3307:3306 -e MYSQL_ROOT_PASSWORD123 m…

Golang每日一练(leetDay0092) 丑数 I\II Ugly Number i\ii

目录 263. 丑数 Ugly Number I 🌟 264. 丑数 Ugly Number II 🌟🌟 🌟 每日一练刷题专栏 🌟 Rust每日一练 专栏 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 263. 丑数 Ugl…

chatgpt赋能python:如何利用Python提高2022年的SEO效果

如何利用Python提高2022年的SEO效果 当谈到SEO时,Python已经成为了一种非常流行和有用的工具。在SEO的竞争激烈的时代,使用Python可帮助您找到各种创新方法来优化您的网站。在这篇文章中,我们将着重介绍Python的几种方法,来提高2…

高通开发系列 - 内核升级后音频驱动的开发和调试

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 背景概述msm8909平台codec框图msm8909内部控件的关系msm8909 数字codec内部处理流程驱动和dts的匹配问题msm8909 pm8909声卡部分的DTS…

chatgpt赋能python:Python怎么倒序输出列表

Python怎么倒序输出列表 介绍 Python是一种非常流行的编程语言,因为它具有简单易用和开放源代码的特点。使用Python可以进行许多操作,包括列表处理。列表是Python中常用的数据类型之一,它可以存储多个值并且可以通过下标访问。本文将介绍如…

chatgpt赋能python:Python内置函数:优化你的代码

Python内置函数:优化你的代码 在Python中,内置函数是非常重要的节省时间和简化代码的方法。Python内置了许多函数,可以在任何地方使用。无论从哪个角度看,这些函数都是编程中不可或缺的工具。在本篇文章中,我们将介绍…

chatgpt赋能python:Python如何切换中文

Python 如何切换中文 Python 是一种广泛使用的编程语言,被用于多种目的,包括数据分析、机器学习、Web 应用程序等。在使用 Python 进行开发时,需要处理不同的语言,其中中文也是包括在内的。对于需要切换中文的情况,本…

【考点】CKA 05_为 Kubernetes 运行 etcd 集群 etcd 备份与恢复

etcd 备份与恢复 1. 先决条件2. 内置快照2.1 安装 etcd2.2 获取 ENDPOINT 所提供的键空间的快照到文件 snapshotdb 注意!!!在 harbor 仓库中准备好升级需要的镜像控制平面节点:升级 kubeadm控制平面节点:验证升级计划控…

《设计模式》之解释器模式

文章目录 1、定义2、动机3、类结构4、优缺点5、总结6、代码实现(C) 1、定义 给定一个语言,定义它的文法的一种表示,并定义一种解释器,这个解释器使用该表示来解释语言中的句子。 2、动机 在软件构建过程中,如果某一特定领域的问…

数据结构——栈,队列和数组

文章目录 **一 栈****1 基本概念****2 栈的顺序存储结构****2.1 顺序栈的实现****2.2 顺序栈的基本运算****2.3 共享栈** **3 栈的链式存储结构** **二 队列****1 基本概念****2 队列的顺序存储结构****2.1 队列的顺序存储****2.2 循环队列****2.3 循环队列的操作** **3 队列的…

JS 怎么理解ES6新增Set、Map两种数据结构?

目录 一、前言 二、Set 1.Set数据结构定义 2.Set数据结构的特性 3.Set数据结构的基本使用 4.Set遍历数据 5.Set 的使用场景 6.WeakSet的使用 7.垃圾回收机制 三、Map 1.Map数据结构定义 2.Map数据结构的特性 3.Map数据结构的基本使用 4.Map遍历数据 5.Map的使用场…