Linux系统——远程访问及控制

目录

一、OpenSSH服务器

1.SSH(Secure Shell)协议

2.OpenSSH

2.SSH原理

2.1公钥传输原理

2.2加密原理

(1)对称加密

(2)非对称加密

2.3远程登录

2.3.1延伸

2.3.2登录用户

3.SSH格式及选项

3.1延伸

 3.2pssh——批量远程操作

4.黑/白名单

4.1白名单

4.2黑名单

 5.ssh服务的最佳实践

6.基于密钥验证

6.1创建密钥 

6.2传送到远程主机

6.3登录验证


 

常见的远程连接工具:Xshell finalshell putty seruct MobaXterm(putty seruct不太建议使用)

生产环境更多使用的是Xshell和MobaXterm

远程管理协议

Telnet  :明文传输协议

SSH    :密文传输,具有加密、压缩功能

SSH相较于Telnet的优点:

  • 数据传输是加密的,可以防止信息泄露
  • 数据传输是压缩的,可以提高传输速度

一、OpenSSH服务器

1.SSH(Secure Shell)协议

  • 是一种安全通道协议
  • 对通信数据进行了加密处理,用于远程管理
  • 对数据进行压缩

2.OpenSSH

  • 服务名称:sshd
  • 服务端主程序:/usr/sbin/sshd
  • 服务端配置文件:/etc/ssh/sshd_config
  • 客户端配置文件:/etc/ssh/ssh_config 

在Linux系统中,ssh是默认开启的

2.SSH原理

2.1公钥传输原理

  • 客户端发起链接请求
  • 服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)
  • 客户端生成密钥对
  • 客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密
  • 客户端发送加密值到服务端,服务端用私钥解密,得到Res
  • 服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)
  • 最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密

首次连接时的公钥交换

  1. 客户端发起连接请求,服务端会生成一个会话id,以及将会话id和自己的公钥交给客户端
  2. 客户端拿到公钥和会话id以后,会用自己的公钥和对面给的会话id做运算得到一个结果,然后用服务器的公钥加密,传给服务端
  3. 服务端收到这个结果,用自己的私钥去解密结果;结果=会话id+客户端的公钥;结果-会话id=客户端的公钥。最终服务端会得到客户端的公钥 

2.2加密原理

(1)对称加密

1、概念 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用

2、常用算法 在对称加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等。

3、特点 1、加密方和解密方使用同一个密钥; 2、加密解密的速度比较快,适合数据比较长时的使用; 3、密钥传输的过程不安全,且容易被破解,密钥管理也比较麻烦;

4、优缺点 对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。 对称加密算法的缺点是在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的独一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担

(2)非对称加密

1、概念 非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

2、常用算法

  • RSA(RSA algorithm):目前使用最广泛的算法
  • DSA(Digital Signature Algorithm):数字签名算法,和 RSA 不同的是 DSA仅能用于数字签名,不能进行数据加密解密,其安全性和RSA相当,但其性能要比RSA快
  • ECC(Elliptic curve cryptography,椭圆曲线加密算法)
  • ECDSA:Elliptic Curve Digital Signature Algorithm,椭圆曲线签名算法,是ECC和 DSA的结合,相比于RSA算法,ECC 可以使用更小的秘钥,更高的效率,提供更高的安全保障

3、原理 首先ssh通过加密算法在客户端产生密钥对(公钥和私钥),公钥发送给服务器端,自己保留私钥,如果要想连接到带有公钥的SSH服务器,客户端SSH软件就会向SSH服务器发出请求,请求用联机的用户密钥进行安全验证。SSH服务器收到请求之后,会先在该SSH服务器上连接的用户的家目录下

4、优缺点 相比于对称加密技术,非对称加密技术安全性更好,但性能更慢。

此本次实验中,我们用非对称加密算法ECDSA进行加密,为了方便用root用户,也可给其他普通用户配置

2.3远程登录

会生成一个known_hosts(公钥的集合)

可以看到是加密后的信息(可以通过确定要连接的机器和准备连接该服务端的提示信息)

假设可以通过另一台服务器伪装IP地址一样的服务端,用伪装后的服务端连接,会出现如下报错

免验证登录  可以修改客户端的配置文件(有安全隐患)

2.3.1延伸

假如公司内要更新迭代,更换新采购的新机器要去替代旧机器,可是旧机器无法打开

解决办法是删除固定IP的内容信息

2.3.2登录用户

如果你作为zhangsan用户去连接对面服务端的话,那么对面也要有个zhangsan用户

3.SSH格式及选项

ssh  用户@IP地址

选项含义
-l指定用户名
-p指定端口号
-t跳板

ssh  -l  用户  

ssh  -p  端口号

ssh 可以直接远程使用命令

3.1延伸

模拟拒绝访问,如果想要连接的虚拟机拒绝访问(做了防火墙策略)那么可以做一个跳板,连接想要连接的虚拟机

此时用客户端连接想要连接的服务端就发现连接不上了;此时我们可以做一个跳板对想连接的服务端进行连接

禁止root用户连接

可以切换到其他用户再连接root用户

不允许切换root用户可以将wheel组注释解掉

 3.2pssh——批量远程操作

pssh需要安装

-H指定对哪些机器进行操作;-i 指定做哪些操作 

4.黑/白名单

白名单:默认拒绝所有 只有允许的人才可以访问

黑名单:默认允许所有 只有名单上的人不允许访问 

4.1白名单

只允许91.100登录91.101的zhangsan 所有机器可以登录101的lisi

4.2黑名单

 5.ssh服务的最佳实践

  • 建议使用非默认端口 22
  • 禁止使用protocol version 1
  • 限制可登录用户 白名单
  • 设定空闲会话超时时长
  • 利用防火墙设置ssh访问策略
  • 仅监听特定的IP地址 公网 内网
  • 基于口令认证时,使用强密码策略,比如:tr -dc A-Za-z0-9_ < /dev/urandom | head -c 12| xargs
  • 使用基于密钥的认证
  • 禁止使用空密码
  • 禁止root用户直接登录
  • 限制ssh的访问频度和并发在线数
  • 经常分析日志 分离

6.基于密钥验证

使用密码验证终归会存在着被骇客暴力破解或嗅探监听的危险,其实也可以让 ssh 服务基于密钥进行安全验证 (可无需密码验证)。

6.1创建密钥 

也可指定算法类型:输入ssh-keygen -t ed25519(ecdsa) 

6.2传送到远程主机

查看远程服务端的信息

远程服务端收到一个密钥文件

6.3登录验证

不验证密码,使用免交互登录的话,输入ssh-agent  bash将ssh-agent交给bash管理

再输入ssh-add将用户私钥添加到运行中的ssh-agent中,后续的远程连接ssh,就不需要每次都输入密码并验证。一旦私钥被添加到ssh-agent中,它会暂时保存解密后的私钥方便后续使用

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

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

相关文章

Pod调度

在默认情况下&#xff0c;一个Pod在哪个Node节点上运行&#xff0c;是由Scheduler组件采用相应的算法计算出来的&#xff0c;这个过程是不受人工控制的。但是在实际使用中&#xff0c;这并不满足的需求&#xff0c;因为很多情况下&#xff0c;我们想控制某些Pod到达某些节点上&…

跟我学c++高级篇——基础类型和POD结构体反射

一、基础类型反射 在前面以枚举体和函数进行了反射的实践&#xff0c;在其中也提到过&#xff0c;其实更应该进行反射的是类&#xff08;结构体&#xff09;。毕竟现在以面向对象编程基本已经普及&#xff0c;类&#xff08;结构体&#xff09;的应用几乎已经是无法避免的。所…

高斯Hack算法

背景 刷leetcode时&#xff0c;碰到一题需要求解n个bit中选择m个bit的所有组合集&#xff0c;我只想到了递归求解&#xff0c;没啥问题&#xff0c;但是在官方题解中看到了牛逼的方法(Gospers Hack)&#xff0c;故记录一下。 4bit中2个1的情况 0011b0101b0110b1001b1010b1100b…

基于协同过滤的零食推荐系统

介绍 协同过滤算法&#xff1a;协同过滤是推荐系统中比较常用的算法之一&#xff0c;其核心思想是寻找用户之间的相似性&#xff0c;通过发现用户之间的共性&#xff0c;向用户推荐可能喜欢的商品或服务。Python Django Vue&#xff1a;Django 是一个基于 Python 的 Web 开发框…

模型的权值平均的原理和Pytorch的实现

一、前言 模型权值平均是一种用于改善深度神经网络泛化性能的技术。通过对训练过程中不同时间步的模型权值进行平均&#xff0c;可以得到更宽的极值点&#xff08;optima&#xff09;并提高模型的泛化能力。 在PyTorch中&#xff0c;官方提供了实现模型权值平均的方法。 这里…

遥感类SCI期刊_一区二区汇总

IEEE Geoscience And Remote Sensing Magazine(Ieee地球科学与遥感杂志) h-index:19 CiteScore:17.80 1区 IEEE Geoscience and Remote Sensing Magazine | IEEE Xplore Remote Sensing Of Environment(环境遥感) h-index:238 CiteScore:24.80 1区 https://www.scienced…

深度学习15—(迁移学习)冻结和解冻神经网络模型的参数

冻结与解冻代码&#xff1a; def freeze_net(net):if not net:returnfor p in net.parameters():p.requires_grad Falsedef unfreeze_net(net):if not net:returnfor p in net.parameters():p.requires_grad True 这段代码定义了两个函数&#xff1a;freeze_net 和 unfree…

webview全屏处理,即插即用

去年双十一有个直播的需求&#xff0c;听起来很简单&#xff0c;技术也都很成熟&#xff0c;但是真的开始实现后&#xff0c;还是有不少坑的&#xff0c;首先第一个uc内核不支持webRTC协议&#xff0c;需要重新开发chrome内核的webview&#xff0c;其次webview全屏处理、悬浮窗…

PYTHON通过跳板机巡检CENTOS的简单实现

实现的细节和引用的文件和以前博客记录的基本一致 https://shaka.blog.csdn.net/article/details/106927633 差别在于,这次是通过跳板机登陆获取的主机信息,只记录差异的部份 1.需要在跳板机相应的路径放置PYTHON的脚本resc.py resc.py这个脚本中有引用的文件(pm.sh,diskpn…

查询速度提升15倍!银联商务基于 Apache Doris 的数据平台升级实践

本文导读&#xff1a; 在长期服务广大规模商户的过程中&#xff0c;银联商务已沉淀了庞大、真实、优质的数据资产数据&#xff0c;这些数据不仅是银联商务开启新增长曲线的基础&#xff0c;更是进一步服务好商户的关键支撑。为更好提供数据服务&#xff0c;银联商务实现了从 H…

EI级 | Matlab实现VMD-TCN-LSTM变分模态分解结合时间卷积长短期记忆神经网络多变量光伏功率时间序列预测

EI级 | Matlab实现VMD-TCN-LSTM变分模态分解结合时间卷积长短期记忆神经网络多变量光伏功率时间序列预测 目录 EI级 | Matlab实现VMD-TCN-LSTM变分模态分解结合时间卷积长短期记忆神经网络多变量光伏功率时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.【E…

Springboot3新特性:开发第一个 GraalVM 本机应用程序(完整教程)

在讲述之前&#xff0c;各位先自行在网上下载并安装Visual Studio 2022&#xff0c;安装的时候别忘了勾选msvc 概述&#xff1a;GraalVM 本机应用程序&#xff08;Native Image&#xff09;是使用 GraalVM 的一个特性&#xff0c;允许将 Java 应用程序编译成本机二进制文件&am…

AI-数学-高中-5.求函数解析式(4种方法)

原作者视频&#xff1a;函数】3函数解析式求法&#xff08;易&#xff09;_哔哩哔哩_bilibili 1.已知函数类型-待定系数法&#xff1a;先用待定系数法把一次或二次函数一般表达式写出来&#xff1b;再用“要变一起变”左右两边同时替换&#xff0c;计算出一般表达式的常数&…

18、golang时间管理

时间 时间是非常重要的&#xff0c;离开了时间&#xff0c;几乎没有哪个生产环境数据能够有意义。 在Go语言中&#xff0c;时间定义为Time结构体。 package mainimport ("fmt""time" )func main() {var t time.Now()fmt.Println(t) fmt.Printf("%…

【嵌入式-裸机开发】kermit工具安装使用

安装ckermit sudo apt-get install ckermit配置kermit vim ~/.mykermrc set line /dev/ttyS0 set speed 115200 set carrier-watch off set handshake none set flow-control none robust set file type bi…

ZZULIOJ 1121: 电梯

题目描述 在某一高层建筑内只有一部电梯&#xff0c;当你按下一个数时&#xff0c;电梯会运行到那一层。已知电梯每上升一层需6秒&#xff0c;下降一层需4秒&#xff0c;在需要停留的那层停留5秒。现有N个整数组成的一个需求列表&#xff0c;电梯将依次响应&#xff0c;电梯从…

树的高度C++(dfs)

树是一种特殊的图结构&#xff0c;有根树是一个有固定根的树。 现在给定一棵有根树&#xff0c;编程求出树中所有节点到指定的根节点最远距离。 输入格式 第一行是两个整数 N,M&#xff0c;表示数的顶点数和根节点的编号。接下来 N−1 行&#xff0c;每行两个整数 u,v&#xf…

SpringIOC之support模块GenericGroovyApplicationContext

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

商务外语MR混合现实仿真情景实训教学

MR混合现实技术是一种将虚拟世界与真实世界相结合的技术。通过MR设备&#xff0c;我们可以将虚拟的场景、人物、物品等元素实时地呈现在真实的环境中&#xff0c;实现真实与虚拟的完美融合。在商务外语的实训教学中&#xff0c;MR技术可以为我们提供丰富的场景资源&#xff0c;…

【c++】利用嵌套map创建多层树结构

通常树的深度都大于1&#xff0c;即树有多层&#xff0c;而树结构又可以用c的map容器来实现&#xff0c;所以&#xff0c;本文给出了一种多层树结构的实现思路&#xff0c;同时也给出了相应的c代码。 整体思路概述 首先定义一个节点类Node类&#xff0c;要包括children&#x…