首页 > 其他分享 >[RHCE学习笔记]RedHat 使用sshd服务远程连接服务器

[RHCE学习笔记]RedHat 使用sshd服务远程连接服务器

时间:2025-01-17 17:28:08浏览次数:3  
标签:sshd 公钥 RedHat 密钥 RHCE ssh 服务器 root 客户端

目录

前言

理论

加密技术原理

连接远程服务器的过程                                                                 

版本协商阶段

 密钥和算法协商阶段

 认证阶段

实操

实验一 修改ssh服务端口号

实验二 拒绝root用户登录

实验三 允许指定用户登录

实验四  windows通过密钥远程连接Linux

实验五  Linux客户端通过秘钥免密登录Linux服务端


前言

什么是远程连接服务器? 远程连接服务器通过文字或图形接口方式来远程登录系统,让你在远程终端前登录linux 主机以取得可操作主机接口(shell),而登录后的操作感觉就像是坐在系统前面一样。

远程连接服务器的类型可分为文字接口(明文传输)、图形接口和加密传输。

明文传输:非加密,Telnet、RSH等,目前非常少用

图形接口:非加密,XDMCP、VNC、XRDP等

加密传输:SSH为主,已经取代明文传输

 本文着重论述加密传输方式:SSH


理论

加密技术原理

加密技术可以分为三类,分别是单向加密算法、对称加密算法和非对称加密算法。目前常见的网络数据包加密技术通常是通过“非对称密钥系统”来处理的。主要通过两把不一样的公钥与私钥来进行加密与解密的过程 。

公钥(public key):提供给远程主机进行数据加密的行为,所有人都可获得你的公钥来将数据加密。 私钥(private key):远程主机使用你的公钥加密的数据,在本地端就能够使用私钥来进行解密。私钥只有自己拥有。

单向加密算法:也称为哈希算法,用于提取文件特征码防止文件被篡改。优点是保证数据的完整性,缺点是不可逆。

对称加密算法:加密和解密使用同一个密钥。优点是加密速度快,缺点是需要妥善保管密钥,安全性欠佳。DES(Data Encryption Standard)、3DES、AES(Advanced Encryption Standard)、Blowfish、 IDEA等。

非对称加密算法:公钥可以公开,私钥进行保密,无需安全通道传输密钥。缺点是速度慢。RSA、ECC(Elliptic Curve Cryptography)、Diffie-Hellman密钥交换、ElGamal等。

非对称加密算法图解:

客户端向服务端发起连接。先在客户端和服务端分别生成公私钥,公钥G1是公开的大家都可以知道,而私钥只有本端知道。服务端将自己的公钥提供给客户端,客户端将需要传输的数据用服务端的公钥进行加密传输给服务端,服务端接收到数据使用本端公钥对应的私钥进行解密从而拿到客户端传输的数据

总结
•单向加密算法适用于需要快速验证数据完整性的场景,如密码存储、文件完整性检直等。
•对称加密算法适用于加密大量数据,如文件加密、数据库加密等,但需要安全地管理密钥。
•非对称加密算法适用于密钥分发、数字签名等场景,但速度较慢,不适合大量数据的加密。
在实际应用中,通常会将这三种加密算法结合在一起使用(详看下文“密钥和算法协商阶段”图解),以发挥各自的优势并弥补不足。例如,使用非对称加密来安全地交换对称加密的密钥,然后使用对称加密来加密实际的数据传输。  


连接远程服务器的过程                                                                 

过程(5个阶段)说明
版本号协商阶段SSH目前包括SSH1和SSH2两个版本,双方通过版本协商确定使用的版本
密钥和算法协商阶段SSH支持多种加密算法,双方根据本端和对端支持的算法,协商出最终使用 的算法
认证阶段SSH客户端向服务器端发起认证请求,服务器端对客户端进行认证
会话请求阶段认证通过后,客户端向服务器端发送会话请求
交互会话阶段会话请求通过后,服务器端和客户端进行信息的交互

版本协商阶段

1、服务器端打开端口22,等待客户端连接。

2、客户端向服务器端发起TCP初始连接请求,TCP连接建立后,服务器向客户端发送第一个报文,包括版本标志字符 串,格式为“SSH-..”,协议版本号由主版本号和次版本号组成,软件 版本号主要是为调试使用。

3、客户端收到报文后,解析该数据包,如果服务器的协议版本号比自己的低,且客户端能支持服务器端的低版本,就 使用服务器端的低版本协议号,否则使用自己的协议版本号。

4、客户端回应服务器一个报文,包含了客户端决定使用的协议版本号。服务器比较客户端发来的版本号,决定是否能 同客户端一起工作。如果协商成功,则进入密钥和算法协商阶段,否则服务器断开TCP连接。 说明:上述报文都是采用明文方式传输。

 密钥和算法协商阶段

1、服务器端和客户端分别发送算法协商报文给对端,报文中包含自己支持的公钥算法列表、加密算法列表、 MAC(Message Authentication Code,消息验证码)算法列表、压缩算法列表等等。

2、服务器端和客户端根据对端和本端支持的算法列表得出最终使用的算法。

3、服务器端和客户端利用DH交换(Diffie-Hellman Exchange)算法、主机密钥对等参数,生成会话密钥和会话 ID。 由此,服务器端和客户端就取得了相同的会话密钥和会话ID。对于后续传输的数据,两端都会使用会话密钥进行加密和 解密,保证了数据传送的安全。在认证阶段,两端会使用会话用于认证过程。

说明:会话密钥的生成:

        ① 客户端需要使用适当的客户端程序来请求连接服务器,服务器将服务器的公钥发送给客户端。(服务器的 公钥产生过程:服务器每次启动sshd服务时,该服务会主动去找/etc/ssh/ssh_host*文件, 若系统刚装 完,由于没有这些公钥文件,因此sshd会主动去计算出这些需要的公钥文件,同时也会计算出服务器自己 所需要的私钥文件。)

        ② 服务器生成会话ID,并将会话ID发给客户端。

        ③ 若客户端第一次连接到此服务器,则会将服务器的公钥数据记录到客户端的用户主目录内的 ~/.ssh/known_hosts。若是已经记录过该服务器的公钥数据,则客户端会去比对此次接收到的与之前的记 录是否有差异。客户端生成会话密钥,并用服务器的公钥加密后,发送给服务器。

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

        ⑤ 服务器和客户端都知道了会话密钥,以后的传输都将被会话密钥加密。

 认证阶段

SSH提供两种认证方法:

1、基于口令的认证(password认证):客户端向服务器发出password认证请求,将用户名和密码加密后发送给服务 器,服务器将该信息解密后得到用户名和密码的明文,与设备上保存的用户名和密码进行比较,并返回认证成功或失败 消息。

2、基于密钥的认证(publickey认证):的服务器上的那个客户端产生一对公共密钥,将公钥保存到将要登录账号的家目录的.ssh/authorized_keys文件中。认证阶段:客户端首先将公钥传给服务器端。服务器端收到公钥后会与本地 该账号家目录下的authorized_keys中的公钥进行对比,如果不相同,则认证失败;否则服务端生成一段随机字符 串,并先后用客户端公钥和会话密钥对其加密,发送给客户端。客户端收到后将解密后的随机字符串用会话密钥发送给 服务器。如果发回的字符串与服务器端之前生成的一样,则认证通过,否则,认证失败。

       注:服务器端对客户端进行认证,如果认证失败,则向客户端发送认证失败消息,其中包含可以再次认证的方法列表。 客户端从认证方法列表中选取一种认证方法再次进行认证,该过程反复进行。直到认证成功或者认证次数达到上限,服务器关闭连接为止。

 连接远程服务器图解过程如下图:

图1从里到外分别对应单向加密算法、对称加密和非对称加密。图2,图3分别是对非对称加密和对称加密进行解密的过程。最后使用md5算法压缩并提取特征码2,判断特征码2和特征码1是否相同,如若相同则表示数据未被篡改(防止黑客从中作祟),连接通过;如若不相同则拒绝建立连接。

实操

需要使用到的软件是Openssh。软件默认安装在系统内部可以直接使用

查找ssh服务配置文件

[root@server-side ~]# rpm -ql openssh
/etc/ssh
/etc/ssh/moduli
/usr/bin/ssh-keygen
/usr/lib/.build-id
/usr/lib/.build-id/4b
/usr/lib/.build-id/4b/cafc4bf1b910ff2542f8d5cb611fde7851ca08
/usr/lib/.build-id/64
...................

[root@server-side ~]# tree /etc/ssh
/etc/ssh
├── moduli
├── ssh_config
├── ssh_config.d
│   └── 50-redhat.conf
├── sshd_config    #主配置文件
├── sshd_config.d #辅助配置文件目录
│   ├── 01-permitrootlogin.conf
│   └── 50-redhat.conf
├── ssh_host_ecdsa_key
├── ssh_host_ecdsa_key.pub
 

实验一 修改ssh服务端口号

打开配置文件,添加或修改其中的端口行,添加后输入`wq`保存退出,关闭防火墙重启服务

vim /etc/ssh/sshd_config
systemctl --now disable firewalld
systemctl restart sshd

实验二 拒绝root用户登录

将配置文件中PermitRootLogin yes更改为`no`

 vim /etc/ssh/sshd_config.d/01-permitrootlogin.conf 


实验三 允许指定用户登录

以本人虚拟机中已有的三个普通用户test1、test2、test3为例

[root@server-side ~]# tail -n 3 /etc/passwd
test1:x:1001:1001::/home/test1:/bin/bash
test2:x:1002:1002::/home/test2:/bin/bash
test3:x:1003:1003::/home/test3:/bin/bash

需要将允许登录的用户加入主配置文件的白名单中,保存退出后重启服务生效。

vim /etc/ssh/sshd_config

进入配置文件在最后添加如下内容:

 AllowUsers test1 test2 test3 #不同用户名用空格间隔

注意!在主配置文件中创建白名单后只能允许白名单中的用户进行远程登录,其他所有用户(包括root用户)登录都会被拒绝 


实验四  windows通过密钥远程连接Linux

使用cmd在windows上生成公私钥,打开cmd,在命令行输入以下指令:

ssh-keygen -t rsa

显示:

Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\Administrator/.ssh/id_rsa): #密钥的存储路径

Enter passphrase (empty for no passphrase):   #免密登录不输密码直接回车
Enter same passphrase again:
Your identification has been saved in C:\Users\Administrator/.ssh/id_rsa.    #私钥路径
Your public key has been saved in C:\Users\Administrator/.ssh/id_rsa.pub. #公钥路径
The key fingerprint is:
SHA256:xA3t9cv4WjIuL5kjurQZUGNLKvlrE5sYSmWhSg4qL44 administrator@DESKTOP-4KRF42B
The key's randomart image is:
+---[RSA 3072]----+
|        ..                 |
|   .   . o. .             |
|  . . = o... .           |
|.o + = +  .   .        |
|* = o . S    o .      |
|+o.o..      . o        |
|oo o.+o    oo..     |
|+ o =o +. *. +.      |
|Eo ...=o . =+.       |
+----[SHA256]-----+

生成如下两个文件

将windows生成的公钥保存到linux的 /root/.ssh/authorized_keys 文件中(要登陆哪个用户就保存到那个用户的路径下),注意文件名要与主配置文件中的文件名保持一致

在linux中找到这个文件,并将windows系统生成的公钥拷贝到这个文件中,保存退出。就可以使用cmd命令行免密登录linux

vim /root/.ssh/authorized_keys


实验五  Linux客户端通过秘钥免密登录Linux服务端

这个实验需要准备两台linux系统一台作为客户端,一台作为服务端。首先将上一个实验中拷贝的公钥删除,然后使用客户端生成公私钥文件,并查看路径。

ssh-keygen -t rsa -f /root/.ssh/rsa_key -P '' -q
ll /root/.ssh/

显示如下:

[root@redhat-9 ~]# ll /root/.ssh/
total 16
-rw-------. 1 root root  840 Jan 16 20:34 known_hosts
-rw-r--r--. 1 root root   96 Jan 16 20:13 known_hosts.old
-rw-------. 1 root root 2602 Jan 16 20:10 rsa_key
-rw-r--r--. 1 root root  567 Jan 16 20:10 rsa_key.pub

将客户端的公钥拷贝给服务端,输入服务端连接密码。

ssh-copy-id -i /root/.ssh/rsa_key.pub root@192.168.128.90

完成传送后使用客户端的私钥去进行服务端免密连接

ssh -i /root/.ssh/rsa_key root@192.168.128.90

接下来不需要输入密码,将自动转换到服务端的界面。显示如下:

  

标签:sshd,公钥,RedHat,密钥,RHCE,ssh,服务器,root,客户端
From: https://blog.csdn.net/Xiaoyintongxue1/article/details/145149774

相关文章

  • Linux认证 | RHCE到底值不值得考?
    Linux认证里头,RHCE到底是中级水平还是高级水平呢?看完下面这些,你就能清楚它到底值不值得去考啦!RHCE(也就是RedHatCertifiedEngineer,红帽认证工程师),在Linux这个领域里,那可是相当有名的认证,好多做运维工作的人、网络工程师都没法避开这一证书。虽说名字里带着“工程师......
  • RHCE-第八章:防火墙
    一、什么是防火墙防火墙是位于内部网和外部网之间的屏障,它按照系统管理员预先定义好的规则来控制数据包的进出。防火墙又可以分为硬件防火墙与软件防火墙。硬件防火墙是由厂商设计好的主机硬件,这台硬件防火墙的操作系统主要以提供数据包数据的过滤机制为主,并将其他不必要的功......
  • 使用公钥通过mobaxterm登录sshd被拒绝
    问题现象是,使用mobaxterm登录ubuntu24.04后台失败。mobaxterm上提示ServerrefusedourkeyNosupportedauthenticationmethodsavailable(serversent:publickey) 启用sshd最低调试级别日志vi/etc/ssh/sshd_configLogLevelDEBUG3看到的错误信息是userauth_pubkey......
  • 使用docker部署sshd服务器
    dockersshd服务器使用docker运行包含完整sshd服务的Alpine容器,提供ssh、scp、sftp、rsync等服务。初始化脚本创建setup-user.sh,设置用户名密码,内容如下:#设置root密码root_pwd="123456"echo"root:$root_pwd"|chpasswd#设置其他用户username=useruser_pwd="123456"......
  • 【AI+安全】sshd后门自动化检测 | BinaryAI在恶意软件检测场景的实践
    原创腾讯科恩实验室腾讯科恩实验室2024年11月12日10:12上海一、引言在网络安全攻防对抗中,攻击者经常通过在系统关键组件中植入后门程序,来获取持久的访问权限。sshd(SSHdaemon)作为管理远程登录的核心服务,是攻击者常用的目标之一。攻击者通过修改或者替sshd二进制文件,绕......
  • RHCE-第六章:DNS域名解析服务器
    一、DNS简介DNS(DomainNameSystem)是互联网上的一项服务,它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网。DNS系统使用的是网络的查询,那么自然需要有监听的port。DNS使用的是53端口,在/etc/services(搜索domain)这个文件中能看到。通常DNS是以UDP这......
  • RHCE环境公共问题解决(9.0)
    关于如何使用远程软件进行连接环境问题查看此处网络适配器模式,如果是NAT请修改为仅主机模式Vmware有两张网卡,一张是Vmware1,一张是Vmware8(环境必须用仅主机,避免环境判分错误)默认情况下,仅主机模式修改Vmware1网卡 打开Windows的网络适配器可以看到两张网卡 环境IP为1......
  • redhat cron命令
    在RedHatLinux系统中,要停止crond服务(也就是crontab服务),你可以使用systemctl命令。以下是停止crond服务的命令:  sudosystemctlstopcrond.service如果你想禁用该服务,使其不在启动时自动运行,执行:  sudosystemctldisablecrond.service如果你只是想查看cro......
  • win11 sshd无法启动报1067
    如题ssh安装相关参考https://zhuanlan.zhihu.com/p/576414452也可以在win设置中搜索可选功能安装我是之前装过能正常使用然后一段时间没用想用时怎么都无法启动上网搜的出来的我都基本试了一遍还是无法启动就在我截图记录我的尝试准备发帖问时准备代替方案时它能......
  • centos 7 普通用户安装mysql8 安装包2. 使用lsb_release a命令1. 使用cat /etc/redhat
       [root@bigdatapackage333]#rpm-qa|grepmariadbmariadb-libs-5.5.64-1.el7.x86_64[root@bigdatapackage333]#rpm-qa | grepmysql[root@bigdatapackage333]#[root@bigdatapackage333]#rpm-e--nodepsmariadb-libs-5.5.64-1.el7.x86_64[root@bigdatapack......