ssh远程访问及控制

目录

一、ssh协议简介

1、实现远程访问的协议和程序

2、ssh协议的概念及功能

3、ssh协议的工作原理

3.1 对称加密与非对称加密

3.1.1 对称加密(Symmetric Encryption)

3.1.2 非对称加密(Asymmetric Encryption)

3.2 公钥传输的原理

3.3 加密通讯的原理

二、openSSH程序

1、openSSH程序及配置文件

2、ssh命令基本用法

2.1 直接远程连接

2.2 连接指定用户 

2.3 指定端口号

2.4 跳板登录

2.5 远程执行命令操作

 3、黑白名单

3.1 黑名单

3.2 白名单

 4、禁止root用户登录

 5、ssh服务器的最佳调优

三、使用密钥对免交互验证登录

1、创建密钥

2、将密钥文件传送到远程服务端

3、 登录验证

4、免交互登录(无须密钥密码验证)


一、ssh协议简介

1、实现远程访问的协议和程序

协议:

  • SSH(Secure Shell):SSH是一种加密网络协议,用于通过安全通道在不安全网络上进行远程访问和管理。它提供了加密的通信会话,包括远程登录和执行命令,以及传输文件等功能
  • Telnet:虽然不安全,但仍然被用于远程登录到服务器或设备,通常用于简单的文本交互
  • RDP(Remote Desktop Protocol):主要用于Windows系统,允许用户通过图形界面远程访问另一台计算机。
  • VNC(Virtual Network Computing):允许用户远程控制另一台计算机的图形界面。它是跨平台的远程桌面协议。
  • X11:用于在UNIX和Linux系统上进行图形界面的远程访问。
  • ICA(Independent Computing Architecture):由Citrix Systems开发,用于提供应用程序和桌面虚拟化服务

程序:

  • OpenSSH:OpenSSH 是 SSH 协议的免费开源实现,包括服务器端和客户端程序。它支持加密和身份验证功能,被广泛用于Linux和类Unix系统上

  • PuTTY:PuTTY 是一个流行的免费的SSH和Telnet客户端程序,可在Windows平台上使用。它提供了SSH连接所需的工具和功能

  • WinSCP:WinSCP 是一个免费的SFTP、SCP和FTP客户端程序,用于在Windows平台上与远程计算机进行安全文件传输。它支持SSH协议,提供了用户友好的界面

  • SecureCRT:SecureCRT 是一个商业化的SSH客户端程序,提供了强大的功能和定制选项,适用于Windows、Mac和Linux操作系统

接下来主要详细介绍ssh协议和OpenSSH程序

2、ssh协议的概念及功能

SSH(Secure Shell)是一种加密网络协议,用于在不安全的网络中安全地进行远程访问和管理。它通过加密数据传输,防止信息被窃听或篡改

功能:

  • 加密通信:SSH协议通过加密技术,确保通信过程中的数据传输是安全的,防止数据被窃听或篡改
  • 远程登录:用户可以使用SSH协议远程登录到其他计算机或服务器,以便进行命令行操作、文件管理等任务
  • 加密身份验证:SSH协议支持使用公钥和私钥对进行身份验证,这种方式比传统的基于密码的身份验证更加安全
  • 端口转发:SSH协议支持端口转发,可以通过安全的通道在两个计算机之间建立安全的连接
  • 远程执行命令:SSH允许用户在远程主机上执行命令,这对于自动化脚本和远程管理非常有用
  • 文件传输:SSH协议还支持安全的文件传输,可以在客户端和服务器之间进行安全的文件传输和管理

3、ssh协议的工作原理

3.1 对称加密与非对称加密

3.1.1 对称加密(Symmetric Encryption)
  • 概念:在对称加密中,加密和解密使用相同的密钥。发送方使用密钥将消息加密,接收方使用相同的密钥将消息解密。常见的对称加密算法包括AES(高级加密标准)、DES(数据加密标准)和3DES等

  • 优点:对称加密算法加密和解密速度快,适合大量数据的加密和解密操作

  • 缺点:密钥的安全分发是对称加密的一个挑战,因为发送方和接收方都需要共享相同的密钥。如果密钥在传输过程中被截获,那么加密的安全性就会受到威胁

3.1.2 非对称加密(Asymmetric Encryption)
  • 概念:在非对称加密中,加密和解密使用不同的密钥,分别称为公钥和私钥。公钥用于加密,私钥用于解密。常见的非对称加密算法包括RSA、Diffie-Hellman和ECC(椭圆曲线加密)等

  • 优点:非对称加密算法解决了密钥分发的问题,因为公钥可以公开发布,而私钥则只有接收方知道

  • 缺点:非对称加密算法的加密和解密速度比对称加密算法慢,因此不适合大规模数据的加密和解密操作

区别对称加密非对称加密
密钥数量使用相同的密钥进行加密和解密使用不同的密钥进行加密和解密
速度较快较慢
密钥分发需要解决密钥分发的问题通过公钥和私钥的方式解决了密钥分发的问题
安全性较低更高

3.2 公钥传输的原理

SSH协议中的公钥传输原理通常涉及到公钥认证和密钥交换

详细阐释:

① 客户端向服务端发起连接请求

② 服务端接收到请求后,返回自己的公钥以及一个会话id(此处客户端得到服务端的公钥)

③ 客户端生成密钥对,客户端用自己的公钥异或会话id,计算出一个值res,并用服务端的公钥加密

④客户端发送加密值到服务端,服务端用私钥解密,得到res

⑥ 服务端用解密后的值res异或会话id,计算出客户端的公钥(此处服务端得到客户端公钥)

⑦ 最终:双方各自持有三个密钥,分别为自己的一对公钥、私钥,以及对方的公钥,之后所有的通讯都会被加密

3.3 加密通讯的原理

详细阐释:

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

二、openSSH程序

1、openSSH程序及配置文件

openSSH是实现SSH协议的开源软件项目,适用于各种UNIX、Linux操作系统

执行“systemctl start sshd”命令即可启动sshd服务,默认端口使用的22端口

sshd:服务名称

/usr/sbin/sshd  :服务端主程序

/etc/ssh/sshd_config:服务端配置文件,设置与服务端相关的应用可通过此文件实现

/etc/ssh/ssh_config:客户端配置文件,设置与客户端相关的应用可通过此文件实现

~/.ssh/known_hosts:客户端用来存储已知服务端公钥信息的文件

①当SSH客户端连接到一个新的服务端时,它会检查这个服务端的公钥是否在~/.ssh/known_hosts 文件中。如果公钥在这个文件中,则说明这个服务端是可信的,SSH 客户端会继续连接并进行认证;如果公钥不在这个文件中,则 SSH 客户端会给出一个警告,提示用户这个服务端可能不是可信的,并询问用户是否继续连接

②如果客户端之前已经连接过这个服务端,那么它就会在 ~/.ssh/known_hosts 文件中找到这个服务端的公钥,并使用它进行加密通信。(再次连接时,可通过对比文件中的公钥来确定连接的服务器是否正确)。如果客户端之前没有连接过这个服务端,那么它就会将这个服务端的公钥添加到 ~/.ssh/known_hosts 文件中,以便下次连接时使用

注:

如果服务端的公钥发生了变化,比如重新安装了操作系统或者更换了硬件,那么客户端会提示服务端的公钥发生了变化,并询问用户是否继续连接。这是因为公钥的变化可能意味着服务端的身份已经被篡改,因此需要用户确认服务端的身份。(解决方法:将之前的密钥文件删除,重新连接新的服务端,生成新的密钥文件)

2、ssh命令基本用法

用于建立安全的远程连接

2.1 直接远程连接

ssh   IP地址

2.2 连接指定用户 

ssh   用户名@IP地址
ssh   -l   用户名  IP地址

2.3 指定端口号

ssh    ip地址     -p    端口号

首先可在服务端的/etc/ssh/sshd_config配置文件修改端口号

systemctl restart sshd     #重启sshd服务,修改的配置才能生效

那在客户端远程连接服务端时,可通过-p选项来指定服务端的端口号才能登录

2.4 跳板登录

SSH跳板登录(SSH jump host)是一种通过一个中间主机(跳板主机)来访问其他无法直接访问的目标主机的方法。它提供了一种安全的方式来管理和连接到位于内部网络中的主机,同时限制了对内部网络的直接访问

使用SSH命令从本地计算机连接到跳板主机,再通过跳板主机连接到目标主机

ssh  -t  跳板机ip地址  ssh  -t  跳板机ip地址    ........  ssh  -t  目的机ip地址  
#在目标服务端主机上模拟防火墙拒绝客户端连接,客户端使用跳板连接到目标主机上
[root@localhost .ssh]#iptables -A INPUT -s 172.16.12.10 -j REJECT 
[root@localhost ~]#ssh -t 172.16.12.12  ssh 172.16.12.13

2.5 远程执行命令操作

SSH服务可以通过远程执行命令的方式进行远程操作。通过在ssh命令后直接跟上要执行的命令,可以在远程主机上执行该命令而无需登录到远程主机的shell中

 ssh   ip地址    想使用的命令

 3、黑白名单

SSH的黑白名单通常指的是用于限制SSH连接的IP地址列表,以便控制哪些IP地址可以连接到SSH服务器(黑名单)或者哪些IP地址不允许连接到SSH服务器(白名单)

3.1 黑名单

黑名单是一种限制访问的方式,其中列出的IP地址被禁止连接到SSH服务器,而不在黑名单的IP地址允许连接到SSH服务器

设置黑名单:

①通常由系统管理员在SSH服务器的配置文件中定义。在OpenSSH中,这通常是在/etc/ssh/sshd_config文件中进行配置

②可以使用DenyUsersDenyGroups选项来指定禁止连接的用户或用户组

3.2 白名单

白名单是一种允许访问的方式,其中列出的IP地址被允许连接到SSH服务器。只有在白名单中列出的IP地址才能建立SSH连接,其他IP地址将被拒绝

设置白名单:

①通常由系统管理员在SSH服务器的配置文件中定义。在OpenSSH中,这通常是在/etc/ssh/sshd_config文件中进行配置

②可以使用AllowUsersAllowGroups选项来指定允许连接的用户或用户组

在172.16.12.12服务器上配置:允许所有主机连接本机的mimi用户,却只允许172.16.12.10主机连接本机的dh用户,修改完之后重启sshd服务

 只允许172.16.12.10客户端连接服务端的dh用户

 允许所有主机连接本机的mimi用户

 4、禁止root用户登录

修改服务端配置:禁止root用户登录,再重启sshd服务

 5、ssh服务器的最佳调优

①建议使用非默认端口

②禁止使用protocol version 1

③限制可登录用户的白名单

④设定空闲会话超时时长

⑤利用防火墙设置ssh访问策略

⑥仅监听特定的IP地址 

⑦基于口令认证时,使用强密码策略

比如:tr  -cd  [a-zA-Z0-9]  < /dev/urandom  |  head -c 12 | xargs

⑧使用基于密钥的认证

⑨禁止使用空密码

⑩禁止root用户直接登录

⑪限制ssh的访问频度和并发在线数

⑫经常分析日志分离

三、使用密钥对免交互验证登录

1、创建密钥

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

[root@localhost ~]#ssh-keygen     #客户端创建密钥

2、将密钥文件传送到远程服务端

#客户端将密钥传送到远程服务端
[root@localhost ~]#ssh-copy-id -i /root/.ssh/id_rsa.pub 172.16.12.10

3、 登录验证

此时我们去登录服务端,会使用密钥文件进行验证,提高了安全性

为保障更安全,可开启密钥验证,关闭密码验证,如此只有密钥的客户端才可连接到远程服务端 

4、免交互登录(无须密钥密码验证)

客户端先输入 ssh-agent  bash 将这个命令交给 bash 去管理

再输入 ssh-add  是将用户的私钥添加到运行中的 ssh-agent 中,这样在后续的SSH连接过程中,就不需要每次都手动输入私钥的密码了。一旦私钥被添加到ssh-agent 中,它会暂时保存解密后的私钥以供后续使用

但重启客户端设备后就会失效,需要重新进行上述操作

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

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

相关文章

Pandoc:markdown转word

简介&#xff1a;Pandoc是由John MacFarlane开发的标记语言转换工具&#xff0c;可实现不同标记语言间的格式转换&#xff0c;堪称该领域中的“瑞士军刀”。Pandoc使用Haskell语言编写&#xff0c;以命令行形式实现与用户的交互&#xff0c;可支持多种操作系统&#xff1b;Pand…

斯坦福CS231n学习笔记:DL与CV教程 (1) | 引言与知识基础

前言 &#x1f4da; 笔记专栏&#xff1a;斯坦福CS231N&#xff1a;面向视觉识别的卷积神经网络&#xff08;23&#xff09;&#x1f517; 课程链接&#xff1a;https://www.bilibili.com/video/BV1xV411R7i5&#x1f4bb; CS231n: 深度学习计算机视觉&#xff08;2017&#xf…

Uibot (RPA设计软件)网页表单填写————课前材料四

微信群发助手机器人的小项目友友们可以参考小北的课前材料二博客~ (本博客中会有部分课程ppt截屏,如有侵权请及请及时与小北我取得联系~&#xff09; 紧接着小北的前两篇博客&#xff0c;友友们我们即将开展新课的学习~RPA 培训前期准备指南——安装Uibot(RPA设计软件&#x…

USB micro输入口中三个问题详解——差分信号、自恢复保险丝SMD1210P050TF、电容滤波

前言&#xff1a;本文对USB micro输入口中遇见的三个问题进行详解&#xff1a;差分信号、自恢复保险丝SMD1210P050TF、电容滤波 目录&#xff1a; 差分信号 自恢复保险丝SMD1210P050TF 电容滤波 如下图&#xff0c;USB为U-F-M5DD-Y-1型号&#xff08;9个引脚&#xff0c;除…

【AIGC-文本/图片生成视频系列-9】MagicVideo-V2: 多阶段高美感视频生成

最近得益于扩散模型的快速发展&#xff0c;文本到视频&#xff08;T2V&#xff09;模型的激增。 今天要介绍的是字节的MagicVideo-V2&#xff0c;一个新颖的多阶段 T2V 框架&#xff0c;它集成了文本到图像 (T2I)、图像到视频 (I2V)、视频到视频 (V2V) 和视频帧插值 (VFI) 模块…

LeetCode讲解篇之78. 子集

文章目录 题目描述题解思路题解代码 题目描述 题解思路 初始化一个start变量记录当前从哪里开始遍历搜索nums 搜索过程的数字组合加入结果集 然后从start下标开始遍历nums&#xff0c;更新start&#xff0c;递归搜索 直到搜索完毕&#xff0c;返回结果集 题解代码 class …

LabVIEW通过视频识别开发布氏硬度机自动化测量系统

LabVIEW通过视频识别开发布氏硬度机自动化测量系统 概述&#xff1a; 在当前的工业检测与自动化领域&#xff0c;对于精确测量技术的需求日益增长。特别是在材料硬度测试领域&#xff0c;布氏硬度机的自动化测量出现在越来越多的使用中。展示了一个基于LabVIEW开发的布氏硬度…

自定义C#类库(.dll文件)

环境配置 操作系统&#xff1a;Windows 10 开发工具&#xff1a;Visual Studio 2022 .Net桌面开发环境&#xff1a; 开发步骤 &#xff08;一&#xff09;创建C#类库项目 &#xff08;二&#xff09;配置项目名称和项目路径 &#xff08;三&#xff09;选择所使用的框架&a…

聊聊websocket那些事

前端必备工具推荐网站(免费图床、API和ChatAI等实用工具): http://luckycola.com.cn/ 一、什么是websocket? WebSocket 是一种在单个 TCP 连接上进行全双工通信的网络协议。 它是 HTML5 中的一种新特性&#xff0c;能够实现 Web 应用程序和服务器之间的实时通信&#xff0c;…

大量的视频如何批量随机分割的方法:批量剪辑不求人

在处理大量视频文件时&#xff0c;经常要进行随机分割&#xff0c;满足不同的需求。制作短视频、片段集锦等&#xff0c;批量随机分割视频都是一个高效的方法。下面来看云炫AI智剪如何操作的吧。 分割后的视频缩略图展示&#xff0c;被分割的视频自动分类保存在对应的文件夹中。…

Editplus配置Java运行环境

目录 找工具&#xff08;图1&#xff09; 编译Java&#xff1a;-d classes是在文件classes编译&#xff08;图2&#xff09; 运行Java&#xff1a;-classpath classes是在文件classes运行&#xff08;图3&#xff09; 编译和运行Java &#xff08;图4-5&#xff09; 找工具…

张载为往圣继绝学,唯一的错是不够强大

“自古雄才多磨难&#xff0c;从来纨绔少伟男。” 张载&#xff0c;人称“横渠先生”。他在横渠镇&#xff0c;授徒讲学&#xff0c;恢复古礼&#xff0c;试验井田&#xff0c;写书《正蒙》。张载讲学关中&#xff0c;弟子多为关中人&#xff0c;其学派被称作关学。 张载自学…

YOLOv5源码中的参数超详细解析(7)— yolo.py

前言:Hello大家好,我是小哥谈。YOLOv5是一种先进的目标检测算法,它可以实现快速和准确的目标检测。yolo.py是YOLOv5项目中的一个Python文件,用于实现目标检测算法。该文件包含了YOLOv5模型的定义、训练和推理过程。本节课就结合源码对yolo.py文件进行逐行解析~!🌈 前期…

C++I/O流——(4)文件输入/输出(第一节)

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 含泪播种的人一定能含笑收获&#xff…

8 - MySQL数据读写分离|MySQL多实例

MySQL数据读写分离&#xff5c;MySQL多实例 MySQL数据读写分离数据读写分离如何实现数据的读写分离提供数据读写分离服务的软件&#xff08;中间件&#xff09;maxscale 软件提供的读写分离服务的工作过程配置数据读写分离结构 提供数据存储服务 MySQL多实例 MySQL数据读写分离…

二分-补题

文章目录 造海船描述输入描述输出描述样例输入 1样例输出 1提示题解 寻找第一个1题目描述输入描述输出描述测试用例题解 查找数字是否出现描述输入描述输出描述样例输入 1样例输出 1题解 字典找数描述输入描述输出描述样例输入 1样例输出 1题解 寻找第一个偶数题目描述输入描述…

关于 setData 同步异步的问题

小程序官方文档中的回答解释: 所以大概意思就是: 1.setData在逻辑层的操作是同步&#xff0c;因此this.data中的相关数据会立即更新,比如下面的例子: const a 1 this.setData({b: a ? a : , }) console.log(that.data.b) // 1 2. setData在视图层的操作是异步&#xff0c;…

自定义白平衡调节的步骤 白平衡怎么设置好 白平衡和色温的关系 用什么软件调节白平衡

不管是拍摄视频/图片&#xff0c;还是视频/图片后期处理&#xff0c;白平衡调节都是很重要的环节&#xff0c;比如在氛围感很好咖啡厅内拍一张照&#xff0c;但是拍出来的人物脸色蜡黄&#xff0c;就是因为白平衡没设置好&#xff0c;下面就说说自定义白平衡调节的步骤&#xf…

java: 5-6 break

文章目录 1. break1.1 介绍1.2 语法和流程图1.3 入门练习1.4 细节说明1.5 练习 【老韩视频p137-】 1. break 看个需求&#xff1a;随机生成 1-100 的一个数&#xff0c;直到生成了 97 这个数&#xff0c;看看你一共用了几次? 【思路分析:循环&#xff0c;但是循环的次数不知道…

大厂咋做支付系统的核对?

核对是保障资金安全的重要机制。 时效角度&#xff0c;主要有&#xff1a; &#xff08;准&#xff09;实时核对 准确性不如离线核对&#xff0c;且需相应实时核对平台建设 离线核对&#xff08;如 T1 核对&#xff09; 主要问题是发现问题的时机较为后置&#xff0c;部分场景…