网络服务之SSH协议
一.SSH基础
1.1 什么是ssh
SSH(Secure Shell)协议是一种用于字符界面远程登录和数据加密传输的协议。
1.2 ssh优点
优点:
-
数据传输是加密的,可以防止信息泄漏
-
数据传输是压缩的,可以提高传输速度
注意:telnet对比ssh 1.没有压缩功能 2.明文传输数据不安全
1.3 ssh原理
1.公钥传输原理
-
1.客户端发起链接请求
-
2.服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)
-
3.客户端生成密钥对
-
4.客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密
-
5.客户端发送加密值到服务端,服务端用私钥解密,得到Res
-
6.服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)
-
7.最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密
2.ssh加密传输原理 
1.对称加密:采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密
2.非对称加密:非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
非对称加密原理(重点!!):首先ssh通过加密算法在客户端产生密钥对(公钥和私钥),公钥发送给服务器端,自己保留私钥,如果要想连接到带有公钥的SSH服务器,客户端SSH软件就会向SSH服务器发出请求,请求用联机的用户密钥进行安全验证。SSH服务器收到请求之后,会先在该SSH服务器上连接的用户的家目录下
1.4 ssh验证方式
1.密码认证:通过用户名和密码登录
2.密钥认证:使用密钥(公钥和私钥)进行无密码登录
1.5 ssh工作方式
1.6 ssh登录方式
第一种方法:ssh [远程主机用户名]@[远程服务器主机名或IP地址] -p port:端口第二种方法:ssh -l [远程主机用户名] [远程服务器主机名或IP地址] -p port:端口注意: -p :当服务端的端口非默认时,需要使用-p 指定端口号进行登录
注意:-t
选项的作用就是强制 SSH 分配一个伪终端给远程会话,适用于跳板机连接。
二.SSH客户端和服务端
2.1 常用文件
OpenSSH是以 SSH协议开发的软件,提供sshd服务常用配置文件有两个/etc/ssh/ssh_config 和/etc/sshd_config。ssh_config:为客户端配置文件,设置与客户端相关的应用可通过此文件实现sshd_config:为服务器端配置文件,设置与服务端相关的应用可通过此文件实现服务名称:sshd服务端主程序:/usr/sbin/sshd 服务端配置文件:/etc/ssh/sshd_config 客户端配置文件:/etc/ssh/ssh_config
注意:ssh服务端主要包括两个服务功能 ssh远程连接和sftp服务(文件传输功能)
2.2 服务端常见配置项
·1.修改默认端口
2.禁止root用户登录
将其中修改为yes: PermitRootLogin yes
#默认 ubuntu不允许root远程ssh登录、每次需要从普通用户切换到root用户
3.设定用户登录失败,服务器切断连接前等待的时间,单位为秒
LoginGraceTime 2m
4.限定同一连接打开的窗口数
MaxSessions 10
#同一个连接最大会话
5.提高ssh速度(重点!!)
注意:无论内网还是外网都要改为no ,禁用反向解析
6.白名单黑名单列表
白名单:默认拒绝所有,只有加进来,才可以
黑名单:默认允许所有,加进来才不可以
2.3ssh 服务的最佳实践
-
建议使用非默认端口 22
-
禁止使用protocol version 1
-
限制可登录用户 白名单黑名单
-
设定空闲会话超时时长
-
利用防火墙设置ssh访问策略
-
仅监听特定的IP地址 公网 内网
-
基于口令认证时,使用强密码策略,比如:tr -dc A-Za-z0-9_ < /dev/urandom | head -c 12| xargs
-
使用基于密钥的认证
-
禁止使用空密码
-
禁止root用户直接登录
-
限制ssh的访问频度和并发在线数
-
经常分析日志 分离
三.基础操作
1.免确认交互问题(客户端)
解决客户端免确认交互直接输入密码登录问题
2.远程免密登录
1.在客户机生成密钥对:ssh-keygen
2.在客户机存放公钥的文件夹中发送自己的公钥给服务器 :ssh-copy-id -i id_ecdsa.pub IP地址
3.结果
注意:此结果是服务器31生成密钥对后将公钥发送给客户机11后的结果,其过程省略
3.模拟服务器新旧更换(重点!)
实验准备:一台客户端、一台旧服务器(ip不变)、一台新服务器 (ip不变)
实验目的:模拟在生产环境中如果旧的服务器设备更换新的服务器,ip还是原先旧的ip的情况下,产生的安全问题,导致远程连接不上服务器。
1.将旧服务器关机模拟
2.在新服务器上添加旧服务器ip测试
3. 在客户机测试远程连接服务器
注意:为什么会出现这种问题,因为密钥不匹配 ;解决方法:找到存放曾经连过主机公钥的文件,删除曾经连过此服务器对应的公钥就可以解决。
4.删除存放曾经连过服务器公钥文件中此服务器 :
5.测试远程连接
注意:在生产环境中硬盘更换、网卡更换、内存更换等设备更换都会导致远程登录不上。
4.如何确认登录服务器正确
1.客户端连接
2.服务端自己连接自己
3.总结
由1、2两张图可以看到公钥是一样的,由此可以判断对方就是要连的服务器;在能知道对面服务器密码的情况下,此方法是可行
相关文章:

网络服务之SSH协议
一.SSH基础 1.1 什么是ssh SSH(Secure Shell)协议是一种用于字符界面远程登录和数据加密传输的协议。 1.2 ssh优点 优点: 数据传输是加密的,可以防止信息泄漏 数据传输是压缩的,可以提高传输速度 注意ÿ…...

蓝桥杯 之 前缀和与查分
文章目录 题目求和棋盘挖矿 前缀和有利于快速求解 区间的和、异或值 、乘积等情况差分是前缀和的反操作 前缀和 一维前缀和: # 原始的数组num,下标从1到n n len(num) pre [0]*(n1) for i in range(n):pre[i1] pre[i] num[i] # 如果需要求解num[l] 到num[r] 的区…...
GB28181开发--ZLMediaKit+WVP+Jessibuca
一、核心组件功能 1、ZLMediaKit 定位:基于 C++11 的高性能流媒体服务框架,支持 RTSP/RTMP/HLS/HTTP-FLV 等协议互转,具备低延迟(最低 100ms)、高并发(单机 10W 级连接)特性,适用于商用级流媒体服务器部署。 特性:跨平台(Linux/Windows/ARM 等)、支持 …...
Ubuntu20.04 在离线机器上安装 NVIDIA Container Toolkit
步骤 1.下载4个安装包 Index of /nvidia-docker/libnvidia-container/stable/ nvidia-container-toolkit-base_1.13.5-1_amd64.deb libnvidia-container1_1.13.5-1_amd64.deb libnvidia-container-tools_1.13.5-1_amd64.deb nvidia-container-toolkit_1.13.5-1_amd64.deb 步…...
如何快速上手RabbitMQ 笔记250304
如何快速上手RabbitMQ 要快速上手 RabbitMQ,可以按照以下步骤进行,从安装到基本使用逐步掌握核心概念和操作: 1. 理解核心概念 Producer(生产者):发送消息的程序。Consumer(消费者)…...
无人机端部署 AI 模型,实现实时数据处理和决策
在无人机端部署 AI 模型,实现实时数据处理和决策,是提升无人机智能化水平的关键技术之一。通过将 AI 模型部署到无人机上,可以实现实时目标检测、路径规划、避障等功能。以下是实现这一目标的详细方案和代码示例。 一、实现方案 1. 硬件选择…...

CentOS 7中安装Dify
Dify 是一个开源的 LLM 应用开发平台。其直观的界面结合了 AI 工作流、RAG 管道、Agent、模型管理、可观测性功能等,让您可以快速从原型到生产。尤其是我们本地部署DeepSeek等大模型时,会需要用到Dify来帮我们快捷的开发和应用。 大家可以参考学习它的中…...

CoDrivingLLM
CoDrivingLLM 思路 1.输入和输出 输入 算法的输入包括车辆当前时刻的状态 S t S_t St ,这个状态包含了车辆的位置、速度、行驶方向等信息;以及参与协同驾驶的联网自动驾驶汽车列表C,用于确定需要进行决策的车辆集合。 输出 输出为车辆…...

Centos7升级openssl和openssh最新版
1、事前准备 下载openssl3.4.1和openssh9.9p2压缩包上传到服务器 https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable// Release OpenSSL 3.4.1 openssl/openssl GitHub 2、查看centos7、ssh以及openssl的版本信息 # 查看CentOS系统版本信息 cat /etc/redhat-release …...

相控阵扫盲
下图展示天线增益 在仰角为0度的情况下随着方位角的变化而变化。需要注意到的是在天线视轴方向上的高增益主瓣上还有几个低增益旁瓣 阵列因子乘以新的阵元方向图会形成指向性更强的波速...
nginx 配置 301跳转
HTTP 跳转到 HTTPS 将所有 HTTP 请求(80 端口)跳转到 HTTPS(443 端口): server {listen 80;server_name example.com;# 跳转到 HTTPSreturn 301 https://$host$request_uri; }server {listen 443 ssl;server_name exa…...

开发环境搭建-03.后端环境搭建-使用Git进行版本控制
一.Git进行版本控制 我们对项目开发就会产生很多代码,我们需要有效的将这些代码管理起来,因此我们真正开发代码前需要把我们的Git环境搭建好。通过Git来管理我们项目的版本,进而实现版本控制。 首先我们使用Git创建本地仓库,然后…...

vivado 充分利用 IP 核
充分利用 IP 核 使用预先验证的 IP 核能够大幅减少设计和验证工作量,从而加速产品上市进程。如需了解更多有利用 IP 的信息,请参 阅以下资源: • 《 Vivado Design Suite 用户指南:采用 IP 进行设计》 (UG896) [ 参照 1…...
外盘农产品期货数据:历史高频分钟回测的分享下载20250305
外盘农产品期货数据:历史高频分钟回测的分享下载20250305 在国际期货市场中,历史分钟高频数据的作用不可小觑。这些数据以分钟为时间尺度,详细记录了期货合约的价格变动和交易量信息,为投资者提供了全面、深入的市场分析视角。通…...

计算机毕设-基于springboot的网上商城系统的设计与实现(附源码+lw+ppt+开题报告)
博主介绍:✌多个项目实战经验、多个大型网购商城开发经验、在某机构指导学员上千名、专注于本行业领域✌ 技术范围:Java实战项目、Python实战项目、微信小程序/安卓实战项目、爬虫大数据实战项目、Nodejs实战项目、PHP实战项目、.NET实战项目、Golang实战…...

用DeepSeek-R1-Distill-data-110k蒸馏中文数据集 微调Qwen2.5-7B-Instruct!
下载模型与数据 模型下载: huggingface: Qwen/Qwen2.5-7B-Instruct HF MirrorWe’re on a journey to advance and democratize artificial intelligence through open source and open science.https://hf-mirror.com/Qwen/Qwen2.5-7B-Instruct 魔搭&a…...

【C++设计模式】第四篇:建造者模式(Builder)
注意:复现代码时,确保 VS2022 使用 C17/20 标准以支持现代特性。 分步骤构造复杂对象,实现灵活装配 1. 模式定义与用途 核心目标:将复杂对象的构建过程分离,使得同样的构建步骤可以创建不同的表示形式。 常见场景&am…...

【杂谈】信创电脑华为w515(统信系统)登录锁定及忘记密码处理
华为w515麒麟芯片版,还有非麒麟芯片版本,是一款信创电脑,一般安装的UOS系统。 准备一个空U盘,先下载镜像文件及启动盘制作工具,连接如下: 百度网盘 请输入提取码 http://livecd.uostools.com/img/apps/l…...

VBA信息获取与处理第五节:如何在单个工作表中查找某个给定值
《VBA信息获取与处理》教程(版权10178984)是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互…...
版本控制器Git和gdb
一.版本控制器Git 1.版本控制简单来讲可以对每一份代码版本进行复制保存,保证每一版代码都可查 2.仓库的本质也是一个文件夹 3.git既是一个客户端,也是一个服务器,是一个版本控制器。而gitee和GitHub都是基于git的网站或平台 4.git的基本…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...

【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...

android RelativeLayout布局
<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...
Leetcode33( 搜索旋转排序数组)
题目表述 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 < k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...
Python学习(8) ----- Python的类与对象
Python 中的类(Class)与对象(Object)是面向对象编程(OOP)的核心。我们可以通过“类是模板,对象是实例”来理解它们的关系。 🧱 一句话理解: 类就像“图纸”,对…...
游戏开发中常见的战斗数值英文缩写对照表
游戏开发中常见的战斗数值英文缩写对照表 基础属性(Basic Attributes) 缩写英文全称中文释义常见使用场景HPHit Points / Health Points生命值角色生存状态MPMana Points / Magic Points魔法值技能释放资源SPStamina Points体力值动作消耗资源APAction…...