RHCE【远程连接服务器】

目录

一、远程连接服务器简介

二、加密技术简介

SSH工作过程:

(1)版本协商阶段

(2)密钥和算法协商阶段

(3)认证阶段  

(4)会话请求阶段

(5)交互会话阶段

三、SSH服务配置

四、用户登录ssh服务器

实验1:修改ssh服务的端口号

实验2:拒绝root用户远程登陆

 实验3:允许特定用户ssh登陆,其他用户都无法登陆

 实验4:linux客户端通过秘钥登录linux服务端root用户


一、远程连接服务器简介

1 )远程连接服务器概念:
  远程连接服务器通过文字或图形接口方式来远程登录系统,让你在远程终端前登录 linux 主机以取得可操
作主机接口( shell ),而登录后的操作感觉就像是坐在系统前面一样。
2 )远程连接服务器的功能:分享主机的运算能力
3 )远程连接服务器的类型(以登录的连接界面来分类)
           [1]文字接口:
                明文传输:Telnet、RSH等,目前非常少用
                加密传输:SSH为主,已经取代明文传输
           [2]图形接口:
                XDMCP、VNC、 XRDP
4 )文字接口连接服务器
  SSH Secure Shell Protocol ,安全的壳程序协议)它可以通过数据包加密技术将等待传输的数据包加密后再传输到网络上。ssh 协议本身提供两个服务器功能:一个是类似 telnet 的远程连接使用 shell 的服务器;另一个就是类似ftp 服务的 sftp-server ,提供更安全的 ftp 服务。

二、加密技术简介

目前常见的网络数据包加密技术通常是通过 非对称密钥系统 来处理的。主要通过两把不一样的公钥与私钥来进行加密与解密的过程 。
公钥( public key ):提供给远程主机进行数据加密的行为,所有人都可获得你的公钥来将数据加密。
私钥( private key ):远程主机使用你的公钥加密的数据,在本地端就能够使用私钥来进行解密。私钥只有自己拥有。

以下是对称密钥和非对称密钥的工作过程示例:

对称密钥加密:

  1. 发送方和接收方共享相同的密钥(K)。
  2. 发送方使用密钥 K 对消息 M 进行加密,得到密文 C。
  3. 发送方将密文 C 发送给接收方。
  4. 接收方使用相同的密钥 K 对密文 C 进行解密,得到原始消息 M。

非对称密钥加密:

  1. 发送方生成一对密钥:公钥 P 和私钥 S。
  2. 发送方将公钥 P 发送给接收方。
  3. 接收方使用公钥 P 对消息 M 进行加密,得到密文 C。
  4. 接收方将密文 C 发送给发送方。
  5. 发送方使用私钥 S 对密文 C 进行解密,得到原始消息 M。

SSH工作过程:

在整个通讯过程中,为实现SSH的安全连接,服务端与客户端要经历如下五个阶段: 

详细过程如下:

(1)版本协商阶段

[1] 服务器端打开端口22,等待客户端连接: 服务器端启动后,会打开TCP端口22(默认的SSH端口),并开始监听这个端口,等待来自客户端的连接请求。这是SSH服务的基础步骤,确保任何客户端都可以连接到服务器。

[2] 客户端向服务端发起TCP初始连接请求: 当客户端希望连接到服务器时,它会通过TCP协议向服务器的端口22发送一个初始连接请求。一旦TCP连接建立成功,服务器就会向客户端发送一个包含版本信息的报文。这个报文的格式为“SSH-<主协议版本号>.<次协议版本号>.<软件版本号>”,其中主协议版本号和次协议版本号共同组成协议版本号,而软件版本号主要用于调试目的。

[3] 客户端解析服务器的报文: 客户端接收到服务器发送的版本信息报文后,会解析该数据包。如果发现服务器的协议版本号低于自己的版本号,但客户端可以支持这种较低版本的协议,那么客户端将使用服务器端的低版本协议号。否则,客户端将使用自己的协议版本号。

[4] 客户端回应服务器: 在决定使用的协议版本号后,客户端会向服务器发送一个回应报文,包含其选择的协议版本号。服务器接收到这个报文后,会比较客户端发来的版本号,以确定是否可以与客户端一起工作。如果协议版本号协商成功,则双方进入密钥和算法协商阶段;否则,服务器将断开TCP连接。

需要注意的是,上述所有报文都是通过明文方式传输的,这意味着这些信息在网络中是未加密的,可能会受到中间人攻击等安全威胁。因此,在实际的SSH通信中,一旦协议版本号协商完成,后续的密钥和算法协商将会采用加密的方式进行,以确保通信的安全性。

(2)密钥和算法协商阶段

[1] 服务器端和客户端在建立连接时,会交换包含各自支持的算法列表的报文。这些算法列表包括公钥算法、加密算法、消息验证码(MAC)算法和压缩算法等。

[2] 服务器端和客户端根据对方和自己支持的算法列表,协商确定最终使用的算法。

[3] 通过Diffie-Hellman Exchange(DH交换)算法和主机密钥对等参数,服务器端和客户端生成相同的会话密钥和会话ID。

会话密钥的生成过程:

[1] 客户端请求连接:客户端使用适当的客户端程序请求连接服务器。

[2] 服务器发送密钥:服务器将服务器的公钥发送给客户端。

[3] 密钥生成过程:服务器每次启动sshd服务时,该服务会主动去/etc/ssh/ssh_host*文件找公钥文件。若系统刚装完,没有这些公钥文件,sshd会计算出所需的公钥文件和服务器的私钥文件。

[4] 服务器生成会话ID:服务器生成会话ID,并将其发送给客户端。

[5 客户端记录公钥数据 :若客户端第一次连接到此服务器,则会将服务器的公钥数据记录到客户端的用户主目录内的~/.ssh/known_hosts。若是已经记录过该服务器的公钥数据,则客户端会去比对此次接收到的与之前的记录是否有差异。

[6] 客户端生成会话密钥:客户端生成会话密钥,并用服务器的公钥加密后,发送给服务器。

[7]服务器解密获得会话密钥:服务器用自己的私钥将收到的数据解密,获得会话密钥。

[8] 加密传输开始:服务器和客户端都知道了会话密钥后,以后的传输都将被会话密钥加密。

由此,服务器端和客户端就取得了相同的会话密钥和会话 ID 。对于后续传输的数据,两端都会使用会话密钥进行加密和解密,保证了数据传送的安全。在认证阶段,两端会使用会话用于认证过程

3)认证阶段  

SSH提供两种认证方法:
[1] 基于口令的认证( password 认证):
  客户端向服务器发出 password 认证请求,将用户名和密码加密后发送给服务器,服务器将该信息解密后得到用户名和密码的明文,与设备上保存的用户名和密码进行比较, 并返回认证成功或失败消息。
[2] 基于密钥的认证( publickey 认证):
  客户端产生一对公共密钥,将公钥保存到将要登录的服务器上的那个账号的家目录的.ssh/authorized_keys 文件中。认证阶段:客户端首先将公钥传给服务器端。服务器端收到公钥后会与本地该账号家目录下的authorized_keys 中的公钥进行对比,如果不相同,则认证失败;否则服务端生成一段随机字符串,并先后用客户端公钥和会话密钥对其加密,发送给客户端。客户端收到后将解密后的随机字符串用会话密钥发送给服务器。如果发回的字符串与服务器端之前生成的一样,则认证通过,否则,认证失败。
注意:服务器端对客户端进行认证,如果认证失败,则向客户端发送认证失败消息,其中包含可以再次认证的方法列表。客户端从认证方法列表中选取一种认证方法再次进行认证,该过程反复进行。直到认证成功或者认证次数达到上限,服务器关闭连接为止。

(4)会话请求阶段

认证通过后,SSH客户端向服务器端发送会话请求,请求服务器提供某种类型的服务(目前支持Stelnet、SFTP、SCP、NETCONF),即请求与服务器建立相应的会话

(5)交互会话阶段

会话建立后,SSH服务器端和客户端在该会话上进行数据信息的交互,该阶段,用户在客户端可以通过粘贴文本内容的方式执行命令,但文本会话不能超过2000字节,且粘贴的命令最好是同一视图下的命令,否则服务器可能无法正确执行该命令。如果粘贴的文本会话超过2000字节,可以采用将配置文件通过SFTP方式上传到服务器,利用新的配置文件重新启动的方式执行这些命令

三、SSH服务配置

#ssh服务安装包openssh-server#编辑SSH服务器的配置信息
[root@server ~]# vim /etc/ssh/sshd_config以下常用的一些配置信息:
#Port 22 #监听端口,默认监听22端口 【默认可修改】
#AddressFamily any #IPV4和IPV6协议家族用哪个,any表示二者均有
#ListenAddress 0.0.0.0 #指明监控的地址,0.0.0.0表示本机的所有地址 【默认可修改】
#ListenAddress :: #指明监听的IPV6的所有地址格式
#HostKey /etc/ssh/ssh_host_rsa_key # rsa私钥认证 【默认】
#HostKey /etc/ssh/ssh_host_dsa_key # dsa私钥认证
#HostKey /etc/ssh/ssh_host_ecdsa_key # ecdsa私钥认证
#HostKey /etc/ssh/ssh_host_ed25519_key # ed25519私钥认证
#SyslogFacility AUTHPRIV #当有人使用ssh登录系统的时候,SSH会记录信息,信息保存
在/var/log/secure里面
#LoginGraceTime 2m #登录的宽限时间,默认2分钟没有输入密码,则自动断开连接
#PermitRootLogin yes #是否允许管理员远程登录,'yes'表示允许
#MaxAuthTries 6 #最大认证尝试次数,最多可以尝试6次输入密码。之后需要等待某段时间后才
能再次输入密码
#MaxSessions 10 #允许的最大会话数
#AuthorizedKeysFile .ssh/authorized_keys #选择基于密钥验证时,客户端生成一对公私
钥之后,会将公钥放到.ssh/authorizd_keys里面
#PasswordAuthentication yes #是否允许支持基于口令的认证
#ChallengeResponseAuthentication no #是否允许使用键盘输入身份验证,也就是xshell
的第三个登录方式
#UseDNS yes #是否反解DNS,如果想让客户端连接服务器端快一些,这个可以改为no
#Subsystem sftp /usr/libexec/openssh/sftp-server #支持 SFTP ,如果注释掉,则
不支持sftp连接
#AllowUsers user1 user2 #登录白名单(默认没有这个配置,需要自己手动添加),允许远程
登录的用户。如果名单中没有的用户,则提示拒绝登录

四、用户登录ssh服务器

【在实验之前我们可以拍摄一个快照,避免试验后有些配置文件没有修改过来】

实验1:修改ssh服务的端口号

#编辑SSH服务配置文件:
[root@server ~]# vim /etc/ssh/sshd_config#查看我们修改的ssh服务的端口号:
[root@server ~]# grep port  /etc/ssh/sshd_config
port 666#关闭防火墙并且立即生效:
[root@server ~]# systemctl disable --now firewalld#检查firewalld的服务状态(可以看到已经是关闭状态)
[root@server ~]# systemctl status firewalld
○ firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; preset: enable>Active: inactive (dead)Docs: man:firewalld(1)#将 SELinux(Security-Enhanced Linux)的运行模式设置为 Permissive:
[root@server ~]# setenforce 0#查看当前 SELinux 的运行模式:
[root@server ~]# getenforce
Permissive#重启ssh进程:
[root@server ~]# systemctl restart sshd

测试一下:

测试成功!!!

实验2:拒绝root用户远程登陆

#说明:注意rhel9中的/etc/ssh/sshd_config和/etc/ssh/sshd_config.d/*.conf中的
配置,因为我们安装rhel9时设置密码时默认是开启root远程登录的,即使SSH服务配置文件中是默认不允许root远程登录的,但是我们依旧可以远程登录。我们允许root远程登录的配置是在/etc/ssh/sshd_config或/etc/ssh/sshd_config.d/*.conf[root@server ~]# ll /etc/ssh/sshd_config
-rw-------. 1 root root 3676 Oct 19 18:55 /etc/ssh/sshd_config
[root@server ~]# ll /etc/ssh/sshd_config.d
total 8
-rw-r--r--. 1 root root 141 Oct 15 23:34 01-permitrootlogin.conf
-rw-------. 1 root root 719 Jul 20  2023 50-redhat.conf#我的关于root用户可以远程登录的配置文件在/etc/ssh/sshd_config.d/01-permitrootlogin.conf中,并修改其参数为no:
[root@server ~]# vim /etc/ssh/sshd_config.d/01-permitrootlogin.conf
[root@server ~]# grep -i permitrootlogin /etc/ssh/sshd_config.d/01-permitrootlogin.conf
PermitRootLogin no#重启ssh进程:
[root@server ~]# systemctl restart sshd

测试一下:

测试成功!!!

 实验3:允许特定用户ssh登陆,其他用户都无法登陆

#我的关于root用户可以远程登录的配置文件在/etc/ssh/sshd_config.d/01-permitrootlogin.conf中,并修改其参数恢复为为yes,不影响下面的实验操作:
[root@server ~]# vim /etc/ssh/sshd_config.d/01-permitrootlogin.conf
[root@server ~]# grep -i permitrootlogin /etc/ssh/sshd_config.d/01-permitrootlogin.conf
PermitRootLogin yes#添加一个用户并设置密码:
[root@server ~]# useradd gxc
[root@server ~]# passwd gxc#编辑SSH服务配置文件,在文件的末尾添加允许特定用户ssh登录的特定命令:
[root@server ~]# vim /etc/ssh/sshd_config
[root@server ~]# grep -i allowusers /etc/ssh/sshd_config
AllowUsers gxc#重启ssh进程:
[root@server ~]# systemctl restart sshd

测试一下:

测试成功!!! 

 实验4linux客户端通过秘钥登录linux服务端root用户

 

#在做此实验之前要将之前修改ssh服务的端口号、拒绝root用户远程登陆、允许特定用户ssh登陆,其他用户都无法登陆的配置都恢复如初,直接转到之前的快照或者自行修改#创建密钥对:
[root@server ~]# ssh-keygen -t rsa
ssh-keygen 生成、管理和转换认证密钥 -t制定类型 RSA
/root/.ssh/id_rsa私钥文件
/root/.ssh/id_rsa.pub公钥文件#复制该公钥文件到服务端的该目录下:
[root@server ~]# ssh-copy-id root@192.168.88.5#在本地服务器上登陆对端服务器:
[root@server ~]# ssh root@192.168.8.5

测试一下:

测试成功!!! 

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

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

相关文章

互联网人口红利趋缓下的社群粉丝经济新模式探索

摘要&#xff1a;随着互联网人口红利消失近十年&#xff0c;国内互联网人口红利爆发时期凭借大量用户取得成功的模式不再适用。如今互联网人口增长进入平缓期&#xff0c;社群粉丝经济成为新方向。其能借助人群画像精准推送营销信息&#xff0c;降低成本。如“21 链动模式 AI 智…

android openGL ES详解——混合

一、混合概念 混合是一种常用的技巧&#xff0c;通常可以用来实现半透明。但其实它也是十分灵活的&#xff0c;你可以通过不同的设置得到不同的混合结果&#xff0c;产生一些有趣或者奇怪的图象。混合是什么呢&#xff1f;混合就是把两种颜色混在一起。具体一点&#xff0c;就…

【前端】如何制作一个自己的网页(16)

上次&#xff0c;我们学习了两种复合CSS选择器&#xff0c;以及两种内容分组的方式&#xff1a;整体布局的div元素和局部布局的span元素。 学习目标 学习另一种对内容分组的方式&#xff1a;列表结构。首先&#xff0c;我们会简单了解下什么是HTML的列表结构。然后&#xff0…

《深度学习》YOLO v1网络架构 、损失值、NMS极大值抑制

目录 一、Yolo系列v1 1、核心思想 2、示例 3、流程图解析 二、YOLO系列v1损失函数 1、位置误差 2、置信度误差 3、类别概率损失 三、NMS非极大值抑制 1、概念 2、步骤 四、YOLO v1优缺点 1、优点 1&#xff09;速度快 2&#xff09;端到端 3&#xff09;多尺度…

Python 学习笔记(十二)—— 网络编程

目录 一、网络编程的基本概念 1.1 IP地址 1.1.1 IP的版本 1.1.2 IP的分类 1.1.2.1 公有地址 1.1.2.2 私有地址 1.1.3 IP地址的范围 1.1.4 回环测试 1.2 常见的网络设备 1.3 端口 1.3.1 端口分配 二、网络通信协议 2.1 常用网络协议 2.2 OSI网络协议七层模型 2.3…

Java访问修饰符private,default,protected,public

在Java中&#xff0c;访问修饰符决定了类、方法、变量和构造器的可见性和可访问范围。这里有四个主要的访问修饰符&#xff1a;private、default&#xff08;未显式指定&#xff09;、protected 和 public。下面分别解释它们的作用&#xff1a; 1.private 作用&#xff1a;使…

【C++指南】类和对象(四):类的默认成员函数——全面剖析 : 拷贝构造函数

引言 拷贝构造函数是C中一个重要的特性&#xff0c;它允许一个对象通过另一个已创建好的同类型对象来初始化。 了解拷贝构造函数的概念、作用、特点、规则、默认行为以及如何自定义实现&#xff0c;对于编写健壮和高效的C程序至关重要。 C类和对象系列文章&#xff0c;可点击下…

Vue+ECharts+iView实现大数据可视化大屏模板

Vue数据可视化 三个大屏模板 样式还是比较全的 包括世界地图、中国地图、canvas转盘等 项目演示&#xff1a; 视频&#xff1a; vue大数据可视化大屏模板

java多态

1 final 关键字 final关键可以用来修饰变量、成员方法以及类。 1.1. 修饰变量或字段&#xff0c;表示常量(即不能修改) 2. 修饰类&#xff1a;表示此类不能被继承 我们平时是用的 String 字符串类, 就是用 final 修饰的, 不能被继承. 3. 修饰方法&#xff1a;表示该方法不能…

Excel重新踩坑3:条件格式;基本公式运算符;公式中的单元格引用方式;公式菜单栏其他有用的功能说明;

0、前言&#xff1a;以下内容是学习excel公式的基础内容。 1、需求&#xff1a;将表格特定区域中数值大小大于等于30&#xff0c;小于等于80的单元格&#xff0c;颜色填充为红色&#xff0c;大于80的&#xff0c;颜色填充为黄色。 新建规则之后也可以通过该功能清除规则。 2、基…

使用InternVL、LMDeploy和GTE搭建多模态RAG系统

如何将视觉大模型&#xff08;VLM&#xff09;与 多模态RAG 结合起来&#xff0c;创建服装搜索和搭配推荐&#xff01;本文展示了InternVL模型在分析服装图像和提取颜色、款式和类型等关键特征方面的强大功能。 InternVL2是国内首个在MMMU(多学科问答)上突破60的模型&#xff0…

一次使用LD_DEBUG定位问题的经历

在实际工作中&#xff0c;当遇到段错误&#xff0c;我们会很容易的想到这是非法访问内存导致的&#xff0c;比如访问了已经释放的内存&#xff0c;访问数据越界&#xff0c;尝试写没有写权限的内存等。使用gdb进行调试&#xff0c;查看出异常的调用栈&#xff0c;往往可以定位到…

告别装机烦恼,IT小白到IT大神都在用的免费神器

作为USB启动盘制作工具中的佼佼者&#xff0c;Rufus凭借其卓越的性能和实用性&#xff0c;赢得了众多用户的信赖。这款精巧的实用程序不仅能够将系统ISO镜像完美转换为可引导的USB安装介质&#xff0c;还提供了全面的USB设备管理功能。 Rufus的安装包仅有1.5M大小&#xff0c;…

ubuntu系统库和Anaconda库冲突问题

之前安装opencv时没出现过这种问题,自从安装Anaconda后就总遇到问题。记录下自己的解决过程。 目录 第一步 第二步 第三步 安装opencv时出现以下问题: /usr/bin/ld: /lib/x86_64-linux-gnu/libwayland-client.so.0: undefined reference to `ffi_prep_cif@LIBFFI_BASE_7.…

qt QTableview 左侧 序号 倒序

本文主要在QTableview插入数据的基础上&#xff0c;使左边序号实现倒序&#xff0c;实现如下图所示。 解决办法&#xff1a; QTableview左侧是QHeaderView类构成的&#xff0c;重写QHeaderView的paintSection&#xff0c; 重写序号的文字内容&#xff0c;进而 实现QTableview …

FFT过程中自动补零,补零部分FFT结果不为零

在 FFT&#xff08;快速傅里叶变换&#xff09; 中&#xff0c;补零&#xff08;Zero Padding&#xff09;是为了使信号的点数符合 2 的幂次方&#xff0c;以提高 FFT 的计算效率。然而&#xff0c;即使你对信号进行了补零&#xff0c;FFT 计算后在补零部分可能会得到复数结果不…

医院信息化与智能化系统(5)

医院信息化与智能化系统(5) 这里只描述对应过程&#xff0c;和可能遇到的问题及解决办法以及对应的参考链接&#xff0c;并不会直接每一步详细配置 如果你想通过文字描述或代码画流程图&#xff0c;可以试试PlantUML&#xff0c;告诉GPT你的文件结构&#xff0c;让他给你对应的…

python 文件防感染扫描

一、安装 首先&#xff0c;你需要安装 secplugs-python-client 库。你可以通过 pip 命令来安装&#xff1a; pip install secplugs-python-client确保你的 Python 环境已经正确设置&#xff0c;并且网络连接畅通&#xff0c;以便能够顺利安装。 二、基本用法 1. 初始化客户…

nosql课本习题

nosql题目 1. 文档数据库相比其他 NoSQL 的突出优势和特点是什么&#xff1f; 答案&#xff1a; 文档数据库的突出优势在于它的灵活性和可扩展性。不同于传统的关系型数据库&#xff0c;文档数据库允许存储半结构化和非结构化数据&#xff0c;每个文档可以有不同的字段&#x…

【优先算法】--双指针1

“一念既出&#xff0c;万山无阻。”加油陌生人&#xff01; 目录 1.双指针--移动零 2.双指针-复写零 ok&#xff0c;首先在学习之前&#xff0c;为了方便大家后面的学习&#xff0c;我们这里需要补充一个知识点&#xff0c;我这里所谓的指针&#xff0c;不是之前学习的带有…