Linux的SSH服务
一.SSH服务简介
1.什么是SSH
SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH 为建立在应用层和传输层基础上的安全协议。对数据进行压缩,加快传输速度。
2.SSH协议
2.1 ssh优点
数据传输是加密的,可以防止信息泄露
数据传输是压缩的,可以提高传输速度
2.2 作用
SSHD 服务使用 SSH 协议可以用来进行远程控制,或在计算机之间传送文件。
ssh服务端主要包括两个服务功能 ssh远程链接和sftp服务(文件传输功能)

2.3 常用的 SSH 软件的介绍
SSH 客户端:finalshell xshell putty secureCRT MobaXterm
SSH 服务端:openSSH (Centos 7 默认安装)
2.4 openSSH 服务器配置文件
服务名称:sshd
服务端主程序:/usr/sbin/sshd
服务端配置文件:/etc/ssh/sshd_config
客户端配置文件:/etc/ssh/ssh_config
openSSH是实现SSH协议的开源软件项目,适用于各种UNIX、Linux操作系统。
执行“systemctl start sshd”命令即可启动sshd服务。默认端口使用的22端口。
存放公钥的位置:
首次连接

如何确定此台机器就是我要连的机器?


对比公钥是否相同,相同就是要连入的,不同就不是。
这样验证的目的:防止别人伪装和黑客攻击。
将.10的伪装成.30,.20去远程连接,因为有公钥,直接辨别出是假的,连接不上!

小问题:
旧的机器挂了,新的机器mac地址变了,密钥变了
将之前的密钥文件删除,在重新生成一个,就对应了。
3 公钥传输原理

① 客户端发起连接请求
② 服务端返回自己的公钥以及一个会话id(此处客户端得到服务端的公钥)
③ 客户端生成密钥对
④ 客户端用自己的公钥异或会话id,计算出一个值res,并用服务端的公钥加密
⑤ 客户端发送加密值到服务端,服务端用私钥解密,得到res
⑥ 服务端用解密后的值res异或会话id,计算出客户端的公钥(此处服务端得到客户端公钥)
⑦ 最终:双方各自持有三个密钥,分别为自己的一对公钥、私钥,以及对方的公钥,之后所有的通讯都会被加密。
4 加密通讯原理

4.1 对称加密
① 概念
采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用。
② 常用算法
对称加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等。
③ 特点
1、加密方和解密方使用同一个密钥;
2、加密解密的速度比较快,适合数据比较长时的使用;
3、密钥传输的过程不安全,且容易被破解,密钥管理也比较麻烦;
④ 优缺点
优点:算法公开、计算量小、加密速度快、加密效率高
缺点:在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的独一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。
4.2 非对称加密
① 概念
非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
② 常用算法
-
RSA:目前使用最广泛的算法
-
DSA:数字签名算法,和 RSA 不同的是 DSA仅能用于数字签名,不能进行数据加密解密,其安全性和RSA相当,但其性能要比RSA快
-
ECC(椭圆曲线加密算法)
-
ECDSA:椭圆曲线签名算法,是ECC和 DSA的结合,相比于RSA算法,ECC 可以使用更小的秘钥,更高的效率,提供更高的安全保障
③ 原理
首先ssh通过加密算法在客户端产生密钥对(公钥和私钥),公钥发送给服务器端,自己保留私钥,如果要想连接到带有公钥的SSH服务器,客户端SSH软件就会向SSH服务器发出请求,请求用联机的用户密钥进行安全验证。SSH服务器收到请求之后,会先在该SSH服务器上连接的用户的家目录下。
④ 优缺点
相比于对称加密技术,非对称加密技术安全性更好,但性能更慢
二.SSH的运用
1. ssh配置文件信息
在linux中实现ssh,是通过opsnSSH的sshd服务提供的

1.1 存放ssh服务端的配置文件
/etc/ssh/sshd_config
vim /etc/ssh/sshd_config常用选项配置#Port 22
#ListenAddress 0.0.0.0#LoginGraceTime 2m 登录验证时间为两分钟
#PermitRootLogin yes 允许root用户登录(安全考虑,这里可以设置为no,禁止root用户登录)#MaxAuthTries 6 最大重试的次数为6
PasswordAuthentication yes 允许空密码用户登录
UseDNS no 禁止DNS反向解析,提高服务器的响应速度

1.2 存放ssh客户端的配置文件
/etc/ssh/ssh_config
2. ssh的基本用法
2.1 直接连接
格式:ssh ip地址

第一次连接时会询问你是否要验证公钥,同意之后,下次登录就会自动获取服务端的公钥

2.2 连接指定用户
格式:
① ssh 用户名@ip地址
② ssh -l 用户名 ip地址


2.3 指定端口号
格式: ssh ip地址 -p 端口号
sshd服务的默认端口号是 22,如果不是此端口,需要 -p 来指定端口
在 /etc/ssh/sshd_config下面修改端口号

修改完配置之后需要重启服务,是配置文件生效,再去远程连接

2.4 跳板机
格式: ssh -t ip地址 ssh -t ip地址 ssh -t ip地址 ........

使用跳板是为了方便和安全
实例:
模拟一道防火墙不让你去连接最终主机
[root@localhost .ssh]#iptables -A INPUT -s 192.168.44.30 -j REJECT
#模拟防火墙
[root@localhost ~]# ssh -t 192.168.44.20 ssh -t 192.168.44.30 ssh 192.168.44.40
#方便跳板连接
2.5 直接跟上命令远程操作
格式: ssh ip地址 想使用的命令

3. 黑白名单
白名单:默认拒绝所有,只有白名单上允许的人才可以访问
黑名单:默认允许所有,只有黑名单上的用户让你不允许访问
(白名单优先级高,但一般不会同时使用白名单和黑名单,白名单使用会多一点)
3.1 白名单
在 /etc/ssh/sshd_config 里手动添加
192.168.44.10


192.168.44.20来远程连接

192.168.44.30来远程连接

3.2 黑名单


192.168.44.20来远程连接

192.168.44.30来远程连接

4. 修改默认端口


5. 禁止root用户登录

虽然阻止了root ,但是普通用户可以使用 su 切换到root用户

修改pam认证模块


6. ssh服务的最佳实践
-
建议使用非默认端口 22
-
禁止使用protocol version 1
-
限制可登录用户 白名单
-
设定空闲会话超时时长
-
利用防火墙设置ssh访问策略
-
仅监听特定的IP地址 公网 内网
-
基于口令认证时,使用强密码策略,比如:tr -dc A-Za-z0-9_ < /dev/urandom | head -c 12| xargs
-
使用基于密钥的认证
-
禁止使用空密码
-
禁止root用户直接登录
-
限制ssh的访问频度和并发在线数
-
经常分析日志 分离
如果有一天登录ssh变得非常非常慢,请禁用反向解析
三. 使用密钥对免交互验证登录

-
首先在客户端生成一对密钥(ssh-keygen)
-
并将客户端的公钥ssh-copy-id 拷贝到服务端
-
当客户端再次发送一个连接请求,包括ip、用户名
-
服务端得到客户端的请求后,会到authorized_keys()中查找,如果有响应的ip和用户,就会随机生成一个字符串
-
服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端
-
得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端
-
服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录
步骤:
1.创建密钥

2. 将密钥文件传送到对面

在服务端查看是否收到密钥文件,如果有,会生成一个 authorized_keys 文件

3. 登录验证
此时我们去登录服务端,需要输入密钥文件密码

如果不想输入验证码,就是用免交互登录
4.免交互
先输入 ssh-agent bash 将这个命令交给 bash 去管理
再输入 ssh-add 是将用户的私钥添加到运行中的 ssh-agent 中,这样在后续的SSH连接过程中,就不需要每次都手动输入私钥的密码了。一旦私钥被添加到ssh-agent 中,它会暂时保存解密后的私钥以供后续使用。
机器重启会失效,需要再次输入密码。
相关文章:
Linux的SSH服务
一.SSH服务简介 1.什么是SSH SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH 为建立在应…...
MySQL连续案例续集
01)查询学过「张三」老师授课的同学的信息 SELECT s.*, c.cname, t.tname, sc.score FROM t_mysql_teacher t, t_mysql_course c, t_mysql_student s, t_mysql_score sc WHERE t.tid c.tid AND c.cid sc.cid AND sc.sid s.sid AND t.tname ‘张三’ 02&#x…...
【STM32读取HX711的函数】
[两个普通IO读取HX711数据的函数-主芯片是STM32F407] 以下是.h文件中的内容: #ifndef __hx711_h #define __hx711_h #define HX711CH1_DIO_GROUP GPIOA #define HX711CH1_CLK_GROUP GPIOA #define HX711CH1_DIO_PIN GPIO_Pin_1 #define HX711CH1_CLK_PIN GPIO_Pin…...
MATLAB对数据隔位抽取和插值的几种方法
对于串行的数据,有时我们需要转成多路并行的数据进行处理,抽取;或者是需要对数据进行隔点抽取,或对数据进行插值处理。此处以4倍抽取或插值为例,MATLAB代码实现。 文章目录 抽取方法一:downsample函数方法…...
[NSSCTF Round#16 Basic] CPR
打着玩玩,比赛很简单。 Crypto pr 一个RSA题,n1p*q,n2q*r给了两个c和p,r而且flag经过pad用单因子无法解出。分别用p,r解完再取crt from Crypto.Util.number import * import randomflagplaintext NSSCTF{****************} charset abcdefghijklmn…...
LAMMPS 文献:9 种熔化温度模拟方法的总结与比较:两相法、单相法以及缺陷法
记录一下检索到一篇通过LAMMPS模拟熔化温度的总结文章:单相方法、过热–过冷方法、Z 方法、修正 Z 方法、孔洞方法、修正孔洞方法、两相方法、夹层方法以及修正两相法。 感谢论文的原作者! 文章题目: A comprehensive investigation on the…...
JSR-107 (JCACHE)
JSR107 Specification 1.1.1 Maintenance Release https://docs.google.com/document/d/1ijduF_tmHvBaUS7VBBU2ZN8_eEBiFaXXg9OI0_ZxCrA/edit?pli1 What is JSR-107? JSR-107 is a standardized API for temporary, in-memory caching in Java applications. It defines a s…...
kylin4.0.3升级问题
话接前文: kylin升级(3.0.1->kylin-4.0.3)-CSDN博客文章浏览阅读941次,点赞29次,收藏12次。原本的cube太多了,换其他OLAP数据库太麻烦。相比之下,升级是一个很好的选择(官网有说明内存降低和构…...
【UML】第16篇 活动图
目录 一、什么是活动图 二、应用场景: 三、绘图符号的说明: 四、语法: 五、例图 六、建模的流程 6.1 对业务流程建模时 6.2 对用例进行活动图建模时 一、什么是活动图 活动图(Activity Diagram)是UML中用于描…...
Python学习之路-函数进阶
Python学习之路-函数进阶 参数和返回值的作用 函数根据有没有参数以及有没有返回值,可以相互组合,一共有4 种组合形式:无参数,无返回值;无参数,有返回值;有参数,无返回值ÿ…...
Mac打包Unix可执行文件为pkg
Mac打包Unix可执行文件为pkg 方式一:通过packages页面打包 1.下载packages app Distribution:自定义化更高,包括修改安装页面的内容提示 我这里主要演示Distribution模式的项目:通过unix可执行文件postinstall.sh脚本实现通过ma…...
C++ 模拟散列表 || 哈希表存储与查询,模版题(拉链法)
维护一个集合,支持如下几种操作: I x,插入一个整数 x ; Q x,询问整数 x 是否在集合中出现过; 现在要进行 N 次操作,对于每个询问操作输出对应的结果。 输入格式 第一行包含整数 N ,…...
详解Skywalking 服务Overview页面的参数含义(适合小白)
本文针对刚刚接触skywalking的同学,重点讲解服务Overview页面中各个参数的含义,为大家快速上手skywalking会起到帮助作用! 最重要的三个指标 Service Apdex(数字):当前服务的评分 Successful Rate(数字&a…...
Android studio GridView应用设计
一、xml布局文件设计: <GridViewandroid:id="@+id/gridView"android:layout_width="match_parent"android:layout_height="match_parent"tools:layout_editor_absoluteX="1dp"tools:layout_editor_absoluteY="1dp"andr…...
K8s 是如何完成调度和权重调整?
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、调度流程二、kuble-scheduler 调度原理1 kubernetes 1.23版本调度器filter阶段和score阶段源码分析2 修改调度器插件默认权重示例2.1 环境准备2.2 调整Inte…...
计算机毕业设计----Springboot超市订单管理系统
项目介绍 该超市订单管理毕业设计基于jdk8版本开发,在部署时需要使用jdk8以上的版本。使用了目前流行的框架组合springbootmybatis的框架技术, 实现了供应商管理对供应商实现增删改查、订单管理对超市订单实现增删改查、用户管理等功能,适用…...
如何给AI下达精准的指令,哪些提示词对于AI是有效的?
刚上手那会,我倾向于将 prompt 翻译为“指令”,但这并不精确。“指令”通常对应instructions,属于 prompt 中的纯指令部分,通常是一个动宾结构(做什么)。剩下的部分更多是描述(describe…...
软件外包资源网站分享
经济不景气导致很多人失业,能否找到一份工作或找些项目做做,这里列了一些国内和国外的资源网上,希望对大家有益: 国内篇: 软件项目交易网:(软件项目交易网)这是一个专注于软件开发需求的外包平台…...
在控制理论里,单个输入变量被施加了饱和特性处理,那么后续怎么利用李雅普诺夫判据判断系统稳定性呢?
在控制理论中,当一个系统的输入变量被施加了饱和特性(即输入被限制在某个范围内),系统的稳定性分析可能变得更复杂。使用李雅普诺夫方法判断这样的系统稳定性通常需要考虑非线性特性。下面是如何使用李雅普诺夫方法进行稳定性分析…...
MySQL夯实之路-查询性能优化深入浅出
MySQL调优分析 explain;show status查看服务器状态信息 优化 减少子任务,减少子任务执行次数,减少子任务执行时间(优,少,快) 查询优化分析方法 1.访问了太多的行和列࿱…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...
并发编程 - go版
1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...
Caliper 负载(Workload)详细解析
Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

