SSH的魅力:为何它成为远程访问的首选

🐇明明跟你说过:个人主页

🏅个人专栏:《Linux :从菜鸟到飞鸟的逆袭》🏅

🔖行路有良友,便是天堂🔖

目录

一、引言 

1、SSH简介

2、SSH的历史与发展

3、SSH的主要用途 

二、SSH技术基础

1、SSH协议概述

2、SSH协议的版本

3、SSH的工作原理

  ​编辑  三、SSH的安全特性

1、对称加密与非对称加密 

2、SSH使用的加密算法

四、SSH的高级应用

1、SSH隧道的应用场景

2、SSH与Git的集成 

3、SSH在DevOps中的应用


一、引言 

1、SSH简介

SSH(Secure Shell)是一种安全协议,用于在不安全的网络中执行安全的数据通信。它最初是由IETF(Internet Engineering Task Force,互联网工程任务组)的网络工作小组(Network Working Group)所制定,用于替代之前不安全的网络协议,如Telnet、Rlogin和Rsh。

SSH协议族由一系列协议组成,包括传输层协议(SSH-TRANS)、用户认证协议(SSH-USERAUTH)、连接协议(SSH-CONN)和会话协议(SSH-SESSION)等。这些协议在传输数据时提供了机密性(通过加密)和认证性(通过消息认证码和公钥技术)。

SSH的主要特点包括:

  1. 安全性:SSH通过加密和认证机制确保了数据传输的安全性,防止了数据在传输过程中被窃取或篡改。
  2. 远程登录:SSH提供了一种安全的远程登录方式,允许用户通过SSH客户端安全地登录到远程服务器,并执行命令或传输文件。
  3. 文件传输:SSH协议族中的SCP(Secure Copy)和SFTP(SSH File Transfer Protocol)提供了安全的文件传输功能,用于在本地和远程主机之间传输文件。
  4. 端口转发:SSH支持端口转发功能,可以将一个端口的流量转发到另一个端口,或者将本地端口的流量转发到远程主机上的某个端口。这有助于绕过网络防火墙或进行其他网络配置。
  5. 公钥认证:SSH支持基于公钥的认证方式,允许用户使用公钥和私钥对进行身份认证。这种认证方式比传统的密码认证更安全,因为私钥通常存储在本地,不易被窃取。
  6. 命令行界面:SSH客户端通常提供命令行界面,用户可以在命令行中输入命令并查看输出。这使得SSH成为一种非常灵活和强大的远程管理工具。

   

2、SSH的历史与发展

SSH(Secure Shell)的历史与发展可以追溯到1995年,当时芬兰赫尔辛基大学的研究员Tatu Ylönen为了解决早期远程登录协议(如Telnet、Rlogin和Rsh)的安全性问题,提出了SSH协议的概念。

SSH的初始版本,即SSH1.x,由Ylönen于1995年发布。这个版本通过CRC-32避免数据被篡改,并逐渐成为私有软件。SSH1.x的目标是替代那些不提供强认证和机密性保证的远程登录协议。

然而,随着技术的发展和安全需求的提升,SSH1.x逐渐被认为存在安全漏洞和局限性。因此,IETF(Internet Engineering Task Force,互联网工程任务组)成立了一个工作小组来制定新的SSH标准,即SSH2。

SSH2标准于2006年被采纳为正式标准,它采用了更强大的加密算法和协议机制,提供了更高的安全性和可靠性。SSH2在SSH1的基础上进行了大量的改进和扩展,包括支持多种加密算法、公钥认证、密钥交换等。

在SSH2标准发布后,OpenSSH成为了最流行的SSH实现之一。OpenSSH是一个开源项目,它遵循SSH2标准,并提供了丰富的功能和可移植性。OpenSSH可以在多种操作系统上运行,并且已经成为许多Linux发行版的默认SSH实现。

随着云计算和大数据技术的发展,SSH的安全性和便利性得到了更广泛的应用。SSH不仅用于远程登录和文件传输,还广泛用于自动化运维、云计算管理、安全审计等领域。

  

3、SSH的主要用途 

1. 安全的远程登录:

  • SSH允许用户安全地登录到远程计算机并执行命令。相比传统的Telnet和Rsh等远程登录协议,SSH通过加密传输的数据,保护用户凭证(如用户名和密码)和数据传输过程中的安全性。这使得SSH成为远程管理服务器、网络设备、云实例等的首选协议。

2. 安全的文件传输:

  • SSH提供了两种安全的文件传输方式:SCP(Secure Copy)和SFTP(SSH File Transfer Protocol)。SCP允许用户通过SSH连接在本地和远程主机之间复制文件,而SFTP则提供了一个类似于FTP的文件传输协议,但使用SSH进行加密和认证。这些工具可以确保文件在传输过程中不被窃取或篡改。

3. 端口转发:

  • SSH支持端口转发功能,允许用户将一个端口的流量转发到另一个端口,或者将本地端口的流量转发到远程主机上的某个端口。这可以用于绕过网络防火墙限制、访问内部网络资源或进行其他网络配置。SSH的端口转发功能可以分为本地端口转发、远程端口转发和动态端口转发。

4. 隧道/VPN(虚拟私人网络):

  • 通过SSH,用户可以创建一个安全的隧道或VPN,以加密和路由网络流量。这可以用于保护网络流量免受中间人攻击、穿越受限的网络环境或提供安全的远程访问。SSH隧道可以设置为动态隧道(如SOCKS代理)或静态隧道(如SSH隧道端口转发)。

5. 自动化运维:

  • SSH是自动化运维的重要工具之一。通过使用SSH,运维人员可以编写脚本来自动执行远程命令、部署软件、配置网络设备等。这大大提高了运维效率,并减少了人为错误的可能性。

6. 安全审计和监控:

  • SSH可以配置为记录用户活动、连接尝试和命令执行等详细信息。这些日志可以用于安全审计、入侵检测和故障排查。此外,SSH还可以与其他安全工具(如SIEM系统)集成,以提供更全面的安全监控和响应能力。

7. 多因素认证:

  • SSH支持多因素认证(MFA),通过结合不同的认证方法(如密码、公钥认证、指纹等)来提高访问的安全性。这可以确保只有经过授权的用户才能访问远程系统,并降低未经授权的访问风险。

  

二、SSH技术基础

1、SSH协议概述

SSH(Secure Shell)是一种用于在不安全网络中安全地进行远程登录和执行命令的协议。它通过加密通信和身份认证来保护通信的安全性,并提供了远程登录、文件传输、远程执行命令、隧道和端口转发等功能。

SSH 协议由以下几个组成部分构成:

  1. 传输层协议(SSH Transport Layer Protocol):负责建立安全通道,保护通信过程中的数据传输安全。它使用加密算法和密钥协商协议来加密和认证通信数据,防止数据在传输过程中被窃听、篡改和伪造。
  2. 用户认证协议(SSH User Authentication Protocol):负责对客户端进行身份验证,确保只有经过授权的用户才能访问服务器。它支持多种身份认证方式,如密码、公钥、证书等,用户可以根据自己的需求和安全策略选择合适的身份认证方式。
  3. 连接协议(SSH Connection Protocol):负责在安全通道上建立连接,实现客户端和服务器之间的命令执行、文件传输和端口转发等功能。它提供了一系列命令和功能,使用户可以在远程服务器上执行各种操作,如登录、执行命令、传输文件等。

SSH 协议的主要特点包括:

  • 加密通信:使用加密算法对通信数据进行加密,保护数据在传输过程中的安全性。
  • 身份认证:支持多种身份认证方式,确保只有经过授权的用户才能访问服务器。
  • 会话管理:支持会话管理和多路复用,可以在同一个连接上执行多个会话和命令。
  • 端口转发:支持端口转发和隧道技术,实现安全的网络访问和数据传输。
  • 可靠性和稳定性:提供稳定可靠的远程访问和管理功能,适用于各种网络环境和操作系统平台。

   

2、SSH协议的版本

SSH 协议有两个主要版本:SSH-1 和 SSH-2。

SSH-1:

  • SSH-1 是最早的 SSH 版本,于 1995 年由 Tatu Ylönen 开发。
  • 它使用了较弱的加密算法和认证机制,存在安全漏洞和缺陷,如容易受到中间人攻击等。
  • SSH-1 使用了 RSA 算法进行密钥交换和身份认证,但密钥交换过程中没有进行完全的验证,容易受到中间人攻击。
  • SSH-1 的安全性受到了一些质疑,因此现在已经较少使用。

SSH-2:

  • SSH-2 是对 SSH-1 的改进和扩展,于 2006 年由 IETF(Internet Engineering Task Force)发布。
  • SSH-2 引入了更强大的加密算法和认证机制,提供了更安全、更可靠的远程登录和通信功能。
  • 它支持多种加密算法和密钥交换协议,如 RSA、DSA、ECDSA、Diffie-Hellman 等,提供了更灵活和可靠的安全机制。
  • SSH-2 在安全性、性能和功能方面都有较大的改进,成为了当前主流的 SSH 协议标准,被广泛应用于各种操作系统和平台中。

SSH-2 是目前主流的 SSH 协议版本,提供了更强大、更安全、更可靠的远程登录和管理功能,是用户进行安全远程通信的首选协议。

  

3、SSH的工作原理

SSH(Secure Shell)的工作原理基于加密通信和身份认证,主要分为以下几个步骤:

1. 建立连接:

  • 客户端向服务器发起连接请求,请求建立 SSH 连接。
  • 服务器响应连接请求,协商连接参数和加密算法。

2. 密钥交换:

  • 客户端和服务器通过 Diffie-Hellman 密钥交换协议协商会话密钥。
  • 客户端和服务器生成各自的密钥对,其中包括公钥和私钥。

3. 身份认证:

  • 客户端向服务器发送身份认证请求,提供用户身份信息。
  • 服务器验证客户端提供的身份信息,确认客户端的身份。

4. 会话加密:

  • 客户端和服务器使用协商好的会话密钥对通信数据进行加密和解密。
  • 所有的通信数据都经过加密处理,保护数据在传输过程中的安全性。

5. 数据传输:

  • 客户端和服务器之间通过安全通道进行数据传输,包括远程登录、执行命令、传输文件等操作。
  • 所有的通信数据都经过加密处理,防止数据在传输过程中被窃听、篡改和伪造。

6. 断开连接:

  • 客户端或服务器主动发起断开连接请求,终止 SSH 会话。
  • 断开连接后,会话密钥失效,通信数据无法解密,保护数据的安全性。

    三、SSH的安全特性

1、对称加密与非对称加密 

对称加密和非对称加密是两种常见的加密算法,它们在加密和解密过程中的使用方式有所不同:

对称加密(Symmetric Encryption):

  • 对称加密使用同一个密钥(称为对称密钥)进行加密和解密。
  • 加密和解密过程中使用相同的密钥,因此称为对称加密。
  • 对称加密算法通常具有较高的加密速度和效率。
  • 常见的对称加密算法有 DES(Data Encryption Standard)、AES(Advanced Encryption Standard)等。

非对称加密(Asymmetric Encryption):

  • 非对称加密使用一对密钥(称为公钥和私钥)进行加密和解密。
  • 公钥用于加密数据,私钥用于解密数据;或者私钥用于加密数据,公钥用于解密数据。
  • 非对称加密算法的加密和解密密钥是不同的,因此称为非对称加密。
  • 非对称加密算法通常具有较低的加密速度和效率,但提供了更高的安全性。
  • 常见的非对称加密算法有 RSA(Rivest-Shamir-Adleman)、DSA(Digital Signature Algorithm)、ECC(Elliptic Curve Cryptography)等。

对称加密和非对称加密各有其优缺点,可以根据实际需求和安全性要求选择合适的加密算法。通常情况下,对称加密用于加密大量数据或对称密钥的安全传输,而非对称加密用于安全的身份认证和密钥交换等场景。

  

2、SSH使用的加密算法

SSH 协议可以使用多种加密算法来保护通信数据的安全性,包括对称加密算法、非对称加密算法和哈希算法等。常见的 SSH 加密算法包括:

对称加密算法:

  • AES(Advanced Encryption Standard):AES 是一种高级加密标准,被广泛用于对称加密中,提供了高效、安全的加密和解密功能。在 SSH 中,AES 通常用于对会话数据进行加密和解密。

非对称加密算法:

  • RSA(Rivest-Shamir-Adleman):RSA 是一种常见的非对称加密算法,用于身份认证、密钥交换和数字签名等场景。在 SSH 中,RSA 通常用于密钥交换和身份认证,客户端和服务器可以使用 RSA 密钥对进行安全通信。
  • ECDSA(Elliptic Curve Digital Signature Algorithm):ECDSA 是一种基于椭圆曲线的数字签名算法,也常用于非对称加密和身份认证。在 SSH 中,ECDSA 通常用于生成和验证数字签名,确保通信数据的完整性和真实性。

哈希算法:

  • SHA(Secure Hash Algorithm):SHA 是一组安全散列算法,常用于生成消息摘要和验证数据完整性。在 SSH 中,SHA 通常用于生成消息认证码(MAC),确保通信数据的完整性和可靠性。

四、SSH的高级应用

1、SSH隧道的应用场景

SSH 隧道(SSH Tunnel)是一种通过 SSH 协议建立的加密通道,用于在不安全的网络环境中安全地传输数据。SSH 隧道的应用场景包括但不限于以下几个方面:

1. 安全访问内部网络资源:

  • 通过 SSH 隧道可以安全地访问内部网络资源,如数据库、文件共享、Web 服务等。
  • 用户可以通过 SSH 隧道在远程设备上访问内部网络资源,而无需直接暴露内部网络给公共网络。

2. 加密远程桌面访问:

  • 使用 SSH 隧道可以加密远程桌面(RDP、VNC)的访问流量,保护远程桌面会话中的数据安全性。
  • 用户可以通过 SSH 隧道远程访问桌面应用程序,而无需担心数据在传输过程中被窃听或篡改。

3. 绕过网络屏蔽和防火墙限制:

  • 在网络屏蔽或防火墙限制的网络环境中,可以使用 SSH 隧道绕过限制,访问被屏蔽的服务或网站。
  • SSH 隧道可以将网络流量通过 SSH 加密通道传输,使得网络流量看起来像是 SSH 通信,从而避免被检测和屏蔽。

4. 安全传输文件:

  • 通过 SSH 隧道可以安全地传输文件,保护文件在传输过程中的机密性和完整性。
  • 用户可以使用 SCP(Secure Copy)或 SFTP(SSH File Transfer Protocol)等工具通过 SSH 隧道传输文件,而无需担心文件泄露或被篡改。

5. 建立安全的代理服务:

  • 使用 SSH 隧道可以建立安全的代理服务,通过代理服务器访问互联网资源,保护用户的隐私和数据安全。
  • 用户可以在本地主机上建立 SSH 隧道代理,然后通过代理服务器访问互联网,实现安全的网络连接和数据传输。

   

2、SSH与Git的集成 

SSH 与 Git 的集成是一种常见的方式,用于在 Git 版本控制系统中进行安全的身份认证和数据传输。下面是 SSH 与 Git 集成的基本步骤:

1. 生成 SSH 密钥对:

  • 首先,在本地计算机上生成 SSH 密钥对,包括公钥和私钥。
  • 可以使用 ssh-keygen 命令生成 SSH 密钥对,并指定保存密钥对的路径和文件名。

2. 将公钥添加到 Git 服务器:

  • 将生成的 SSH 公钥添加到 Git 服务器的用户账户中,用于身份认证。
  • 在 Git 服务器上,一般有一个 SSH 公钥管理页面或配置文件,可以将用户的公钥添加到其中。

3. 配置 Git 客户端:

  • 配置 Git 客户端,使其使用 SSH 协议进行通信和身份认证。
  • 可以使用 git config 命令设置 Git 客户端的 SSH 相关配置,如设置 SSH 私钥路径、SSH 用户名等。

4. 使用 SSH 访问 Git 仓库:

  • 使用 SSH 协议访问 Git 仓库,通过 SSH 密钥对进行安全的身份认证。
  • 在执行 Git 操作时,如 clone、push、pull 等,Git 客户端会使用 SSH 密钥对进行身份认证,确保数据传输的安全性和可靠性。

通过以上步骤,可以将 SSH 与 Git 集成起来,实现安全的身份认证和数据传输,保护 Git 仓库中的代码和文件的安全性和完整性。SSH 提供了一种安全的通信机制,用于保护 Git 客户端和服务器之间的通信,确保数据在传输过程中不被窃听、篡改和伪造。

  

3、SSH在DevOps中的应用

1. 远程服务器管理:

  • DevOps 团队经常需要管理多台远程服务器,包括配置管理、软件部署、监控和故障排查等任务。
  • SSH 提供了安全、可靠的远程登录方式,使得 DevOps 工程师可以通过 SSH 远程登录到服务器进行管理操作。

2. 自动化部署:

  • DevOps 团队通常使用自动化工具(如 Ansible、Chef、Puppet 等)进行软件部署和配置管理。
  • 这些自动化工具通常会使用 SSH 协议与目标服务器进行通信,执行部署脚本和配置文件,实现自动化部署和配置管理。

3. 版本控制系统:

  • Git 是 DevOps 团队常用的版本控制系统,用于管理和协作开发项目代码。
  • Git 使用 SSH 协议进行安全的身份认证和数据传输,保护代码在传输过程中的安全性和完整性。

4. 持续集成与持续交付:

  • DevOps 团队通常会构建持续集成和持续交付(CI/CD)流水线,实现自动化的软件构建、测试和部署。
  • CI/CD 工具(如 Jenkins、GitLab CI、Travis CI 等)通常会使用 SSH 协议与目标服务器进行通信,执行部署任务和触发自动化流程。

5. 容器编排与管理:

  • 容器编排平台(如 Kubernetes、Docker Swarm 等)用于管理和调度容器化应用程序。
  • SSH 协议可以用于与容器主机进行通信,执行容器管理命令和监控操作,实现容器编排和管理。

6. 安全审计与监控:

  • SSH 提供了安全的远程登录和通信方式,能够记录用户的登录和操作日志。
  • DevOps 团队可以通过 SSH 登录日志进行安全审计和监控,及时发现异常行为和安全风险。

   

💕💕💕每一次的分享都是一次成长的旅程,感谢您的陪伴和关注。希望这些关于Linux的文章能陪伴您走过技术的一段旅程,共同见证成长和进步!😺😺😺

🧨🧨🧨让我们一起在技术的海洋中探索前行,共同书写美好的未来!!!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

每日OJ题_贪心算法三③_力扣45. 跳跃游戏 II(dp解法+贪心解法)

目录 力扣45. 跳跃游戏 II 解析代码1_动态规划 解析代码2_贪心 力扣45. 跳跃游戏 II 45. 跳跃游戏 II 难度 中等 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 num…

课程作业管理系统,基于 SpringBoot+Vue+MySQL 开发的前后端分离的课程作业管理系统设计实现

目录 一. 前言 二. 功能模块 2.1. 管理员功能模块 2.2. 教师功能模块 2.3. 学生功能模块 三. 部分代码实现 四. 源码下载 一. 前言 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势…

Java并发编程: Synchronized锁升级

文章目录 一、jdk8 markword实现表二、使用工具来查看锁升级 一、jdk8 markword实现表 new -> 偏向锁 -> 轻量级锁(自旋锁、自适应自旋锁)-> 重量级锁: 偏向锁和轻量级锁都是用户空间完成的。重量级锁是需要向内核申请的。 synchr…

Jenkins +配置邮件 centos8.5 安装部署 运维系列一

1 jenkins的war包下载地址: Download and deploy 2 xftp 等方式上传到服务器 #安装jdk tar zxvf jdk-11.0.8_linux-x64_bin.tar.gz mv jdk-11.0.8/ /usr/local/jdk vim /etc/profile export JAVA_HOME/usr/local/jdk export PATH$JAVA_HOME/bin:$PATH CLASSPATH.:$JAVA_…

【Qt QML】ComboBox组件

ComboBox 是一个组合的按钮和弹出列表。它提供了一种以最小的屏幕空间呈现选项列表给用户的方式。ComboBox 使用数据模型填充。数据模型通常是一个 JavaScript 数组、一个 ListModel 或一个整数,但也支持其他类型的数据模型。 下面是一个简单的使用方式。 import …

odoo实施之各种导航设计

odoo各种基础能力:活动、讨论 玩转odoo,真有玩的体验 odoo消息提醒能力 odoo 讨论模块 odoo 通过new message触发任务 安装odoo studio进行拖拉拽设计 查阅官方文档,向官方提issue 欧洲和美国,虽然都是英语,但日期格式…

【数据结构与算法】力扣 102. 二叉树的层序遍历

题目描述 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入: root [3,9,20,null,null,15,7] 输出: [[3],[9,20],[15,7]]示例 2&#x…

kubeflow简单记录

kubeflow 13.7k star 1、Training Operator 包括PytorchJob和XGboostJob,支持部署pytorch的分布式训练 2、KFServing快捷的部署推理服务 3、Jupyter Notebook 基于Web的交互式工具 4、Katib做超参数优化 5、Pipeline 基于Argo Workflow提供机器学习流程的创建、编排…

Web前端一套全部清晰 ⑥ day4 CSS.2 复合选择器、CSS特性、背景属性、标签的显示模式

别人的议论,那是别人的,你的人生,才是你的 —— 24.5.7 一、复合选择器 定义:由两个或多个基础选择器,通过不同的方式组合而成 作用:更准确、更高效的选择目标元素(标签) 1.后代选择…

Unity 性能优化之LOD技术(十)

提示:仅供参考,有误之处,麻烦大佬指出,不胜感激! 文章目录 LOD技术效果一、LOD技术是什么?二、LODGroup组件介绍三、LODGroup组件使用步骤添加组件添加模型 四、Project Settings中与LOD组件相关参数总结 L…

pytest(二):关于pytest自动化脚本编写中,初始化方式setup_class与fixture的对比

一、自动化脚本实例对比 下面是一条用例,使用pytest框架,放在一个类中,两种实现方式: 1.1 setup_class初始化方式 1. 优点: 代码结构清晰,setup_class 和 teardown_class 看起来像传统的类级别的 setup 和 teardown 方法。2. 缺点: 使用 autouse=True 的 fixture 作为…

free5gc+ueransim操作

启动free5gc容器 cd ~/free5gc-compose docker-compose up -d 记录虚拟网卡地址,eth0 ifconfig 查看并记录amf网元的ip地址 sudo docker inspect amf "IPAddress"那一行,后面记录的即是amf的ip地址 记录上述两个ip地址,完成UER…

MCU通过UART/SPI等接口更新flash的方法

MCU可提供一种方便的方式来更新flash内容以进行错误修复bugfix或产品更新update。可以使用以下任何模式更新flash内容: •系统内编程(ISP,In-System Programming):用于使用内部bootloader程序和UART/SPI对片上闪存进行编程program或重新编程reprogram。 •应用程序内编程…

一毛钱不到的FH8208C单节锂离子和锂聚合物电池一体保护芯片

前言 目前市场上电池保护板,多为分体方案,多数场合使用没有问题,部分场合对空间有进一步要求,或者你不想用那么多器件,想精简一些,那么这个芯片就很合适,对于充电电池来说,应在使用…

AI论文速读 |2024[IJCAI]TrajCL: 稳健轨迹表示:通过因果学习隔离环境混杂因素

题目: Towards Robust Trajectory Representations: Isolating Environmental Confounders with Causal Learning 作者:Kang Luo, Yuanshao Zhu, Wei Chen, Kun Wang(王琨), Zhengyang Zhou(周正阳), Sijie Ruan(阮思捷), Yuxuan Liang(梁宇轩) 机构&a…

AI数据中心网络技术选型,InfiniBand与RoCE对比分析

InfiniBand与RoCE对比分析:AI数据中心网络选择指南 随着 AI 技术的蓬勃发展,其对数据中心网络的要求也日益严苛。低延迟、高吞吐量的网络对于处理复杂的数据密集型工作负载至关重要。本文分析了 InfiniBand 和 RoCE 两种数据中心网络技术,帮助…

91、动态规划-不同的路径

思路: 首先我们可以使用暴力递归解法,无非就是每次向下或者向右看看是否有解法,代码如下: public class Solution {public int uniquePaths(int m, int n) {return findPaths(0, 0, m, n);}private int findPaths(int i, int j,…

数据结构-线性表-应用题-2.2-12

1)算法的基本设计思想:依次扫描数组的每一个元素,将第一个遇到的整数num保存到c中,count记为1,若遇到的下一个整数还是等于num,count,否则count--,当计数减到0时,将遇到的下一个整数保存到c中,计…

04.2.配置应用集

配置应用集 应用集的意思就是:将多个监控项添加到一个应用集里面便于管理。 创建应用集 填写名称并添加 在监控项里面找到对应的自定义监控项更新到应用集里面 选择对应的监控项于应用集

[疑难杂症2024-004] 通过docker inspect解决celery多进程记录日志莫名报错的记录

本文由Markdown语法编辑器编辑完成. 写作时长: 2024.05.07 ~ 文章字数: 1868 1. 前言 最近我负责的一个服务,在医院的服务器上线一段时间后,利用docker logs查看容器的运行日志时,发现会有一个"莫名其妙"的报错&…