远程连接服务

目录

一、远程连接服务器简介

二、连接加密技术简介

三、认证阶段

四、ssh实验

1.修改ssh服务器的端口号

2.拒绝root账户远程登录

3.允许特定用户ssh登录,其他用户无法登录

 4.ssh-keygen

一、远程连接服务器简介

概念:

远程连接服务器通过文字或图形接口方式来远程登录系统,让你在远程终端前登录linux主机以取得

可操作主机接口( shell ),而登录后的操作感觉就像是坐在系统前面一样

功能:

分享主机的运算能力

服务器类型:有限度开放连接

工作站类型:只对内网开放
分类:
        文字接口:
                明文传输:Telnet、RSH等,很少用了
                加密传输:SSH为主,已经取代明文传输
        图形接口: XDMCP VNC XRDP

二、连接加密技术简介

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

三、认证阶段

SSH提供两种认证方法:

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

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

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

[root@server ~]# vim /etc/ssh/sshd_config    //默认配置文件
21 . #Port 22 # 默认监听 22 端口 , 可修改
22 . #AddressFamily any # IPV4 IPV6 协议家族用哪个, any 表示二者均有
23 . #ListenAddress 0.0.0.0 # 指明监控的地址, 0.0.0.0 表示本机的所有地址 ( 默认可修改 )
24 . #ListenAddress :: # 指明监听的 IPV6 的所有地址格式
26 . #HostKey /etc/ssh/ssh_host_rsa_key # rsa 私钥认证 , 默认
27 . #HostKey /etc/ssh/ssh_host_ecdsa_key # ecdsa 私钥认证
28 . #HostKey /etc/ssh/ssh_host_ed25519_key # ed25519 私钥认证
34 #SyslogFacility AUTH # ssh 登录系统的时会记录信息并保存在 /var/log/secure
35 . #LogLevel INFO # 日志的等级
39 . #LoginGraceTime 2m # 登录的宽限时间,默认 2 分钟没有输入密码,则自动断开连接
40 PermitRootLogin yes # 允许管理员 root 登录
41 . #StrictModes yes # 是否让 sshd 去检查用户主目录或相关文件的权限数据
42 . #MaxAuthTries 6 # 最大认证尝试次数,最多可以尝试 6 次输入密码。之后需要等待某段时间后才能
再次输入密码
43 . #MaxSessions 10 # 允许的最大会话数
49 .AuthorizedKeysFile .ssh/authorized_keys # 选择基于密钥验证时,客户端生成一对公私钥之
后,会将公钥放到 .ssh/authorizd_keys 里面
65 #PasswordAuthentication yes # 登录 ssh 时是否进行密码验证
66 #PermitEmptyPasswords no # 登录 ssh 时是否允许密码为空
123 .Subsystem sftp /usr/libexec/openssh/sftp-server # 支持 SFTP ,如果注释掉,则不支持
sftp 连接
AllowUsers user1 user2 # 登录白名单(默认没有这个配置,需要自己手动添加),允许远程客户端可以登录我的哪个用户。 如果名单中没有的用户,则提示拒绝登录

四、ssh实验

1.修改ssh服务器的端口号

服务端操作:
[root@server ~]# vim /etc/ssh/sshd_config  编辑配置文件,修改端口号
21 Port 2222       21行端口号修改成2222
[root@server ~]# getenforce 
Enforcing
[root@server ~]# setenforce 0     关闭selinux
[root@server ~]# systemctl stop firewalld     关防火墙
[root@server ~]# systemctl restart sshd        重启服务
[root@server ~]# netstat -lnutp | grep ssh      查看端口已修改
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      34398/sshd: root@pt 
tcp        0      0 0.0.0.0:2222            0.0.0.0:*               LISTEN      34458/sshd: /usr/sb 
tcp6       0      0 :::2222                 :::*                    LISTEN      34458/sshd: /usr/sb 
tcp6       0      0 ::1:6010                :::*                    LISTEN      34398/sshd: root@pt 

客服端操作:
[root@client ~]# ssh root@192.168.31.128   登录被拒绝,默认22号端口已关闭
ssh: connect to host 192.168.31.128 port 22: Connection refused

[root@client ~]# ssh root@192.168.31.128 -p 2222   指明以2222端口登录服务端
The authenticity of host '[192.168.31.128]:2222 ([192.168.31.)' can't be established.
ED25519 key fingerprint is SHA256:xBiJa2NTGydTZe3EvwYGu8juGGACLeRBrc.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerpes
Warning: Permanently added '[192.168.31.128]:2222' (ED25519) st of known hosts.
root@192.168.31.128's password:   输入密码
Activate the web console with: systemctl enable --now cockpit

Register this system with Red Hat Insights: insights-client -
Create an account or view all your systems at https://red.ht/dashboard
Last login: Sat Nov  2 18:17:31 2024 from 192.168.31.1
[root@server ~]# 

2.拒绝root账户远程登录

使用配置文件中的Permitrootlogin参数进行实现

参数值:

服务端:

[root@server ~]# vim /etc/ssh/sshd_config

PermitRootLogin no    参数值改成no
[root@server ~]# systemctl restart sshd

客户端:

[root@client ~]# ssh root@192.168.31.128

root@192.168.31.128's password: 密码

[root@server ~]#   登录进去了    

!!!问题来了,当我发现修改主配置文件/etc/ssh/sshd_config里面的PermitRootLogin选项不生效时,应该配置以下文件:

[root@server ~]# vim /etc/ssh/sshd_config.d/01-permitrootlogin.conf 

PermitRootLogin no
[root@server ~]# systemctl restart sshd    再重启服务

客服端重新登录服务端
[root@client ~]# ssh root@192.168.31.128
root@192.168.31.128's password: 
Permission denied, please try again.

3.允许特定用户ssh登录,其他用户无法登录

 服务端:

[root@server ~]# useradd xiaoming   添加用户
[root@server ~]# passwd xiaoming
更改用户 xiaoming 的密码 。
新的密码: 
无效的密码: 密码少于 8 个字符
重新输入新的密码: 
passwd:所有的身份验证令牌已经成功更新。
[root@server ~]# vim /etc/ssh/sshd_config
allowusers   xiaoming    允许登录xiaoming用户

客户端测试:

[root@client ~]# ssh xiaoming@192.168.31.128
xiaoming@192.168.31.128's password: 
Register this system with Red Hat Insights: insights-client --register
Create an account or view all your systems at https://red.ht/insights-dashboard
[xiaoming@server ~]$ 
注销
Connection to 192.168.31.128 closed.
[root@client ~]# ssh root@192.168.31.128     测试其他用户是否可以登录
root@192.168.31.128's password: 
Permission denied, please try again.
root@192.168.31.128's password: 

 4.ssh-keygen

ssh-keygen 是用于生成、管理、转换密钥的工具
客户端:

[root@server ~]# ssh-keygen -t rsa   一路回车

制作公私钥对id_rsa:私钥文件id_rsa.pub:公钥文件), -t 是指定秘钥类型


[root@client ~]# ssh-copy-id root@192.168.31.128  将公钥上传到服务端

[root@client ~]# ssh root@192.168.31.128  测试客户端
Activate the web console with: systemctl enable --now cockpit.socket

Register this system with Red Hat Insights: insights-client --register
Create an account or view all your systems at https://red.ht/insights-dashboard
Last login: Sat Nov  2 18:53:32 2024 from 192.168.31.129
[root@server ~]# 免密登录成功

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JS中面向对象

一、对象 1.认识对象 在JavaScript中,对象(Object)是一种复合数据类型,它允许你存储键值对。对象的属性是连接到对象的变量,而函数或方法是属于对象的函数。 JavaScript中的对象类似于哈希表,其中键可以是…

【工具变量】“宽带中国”试点城市名单匹配数据集(2000-2023年)

参照秦文晋(2022)的《网络基础设施建设对数字经济发展的影响研究——基于"宽带中国"试点政策的准自然实验》一文中的做法,将选为“宽带中国”试点城市的虚拟变量作为核心解释变量,当一个城市被批复成为“宽带中国”试点…

Matlab车牌识别课程设计报告(附源代码)

Matlab车牌识别系统 分院(系) 信息科学与工程 专业 学生姓名 学号 设计题目 车牌识别系统设计 内容及要求: 车牌定位系统的目的在于正确获取整个图像中车牌的区域, 并识别出车牌号。通过设计实现车牌识别系…

基于OSS搭建在线教育视频课程分享网站

OSS对象存储服务是海量、安全、低成本、高持久的存储服务。适合于存储大规模非结构化数据,如图片、视频、备份文件和容器/虚拟机镜像等。 安装nginx wget https://nginx.org/download/nginx-1.20.2.tar.gz yum -y install zlib zlib-devel gcc-c pcre-devel open…

Edit Data. Create Cell Editors. Validate User Input 编辑数据。创建 Cell Editors。验证用户输入

Goto Data Grid 数据网格 Edit Data. Create Cell Editors. Validate User Input 编辑数据。创建 Cell Editors。验证用户输入 Get and Modify Cell Values in Code 在代码中获取和修改单元格值 仅当 Grid 及其列已完全初始化时,才使用以下方法。如果需要在表单仍…

【JavaEE初阶 — 多线程】Thread的常见构造方法&属性

目录 Thread类的属性 1.Thread 的常见构造方法 2.Thread 的几个常见属性 2.1 前台线程与后台线程 2.2 setDaemon() 2.3 isAlive() Thread类的属性 Thread 类是JVM 用来管理线程的一个类,换句话说,每个线程都有一个唯一的Thread 对象与之关联&am…

【设计模式】如何用C++实现依赖倒置

【设计模式】如何用C实现依赖倒置 一、什么是依赖倒置? 依赖倒置原则(Dependency Inversion Principle,DIP)是SOLID面向对象设计原则中的一项。它的核心思想是: 高层模块不应该依赖于低层模块,两者都应该…

【文献及模型、制图分享】中国城市家庭食物浪费行为及减量对策——以郑州市为例

文献介绍 减少食物浪费是保障粮食安全的重要途径。家庭是社会的基本单元,不仅是产生食物浪费的主要场景,也是开展反食品浪费教育的重要场所。本文以河南省郑州市为例,基于1315份城市家庭食物浪费一手调查数据,首次将城市家庭食物…

【Linux】从零开始使用多路转接IO --- poll

碌碌无为,则余生太长; 欲有所为,则人生苦短。 --- 中岛敦 《山月记》--- 从零开始使用多路转接IO 1 前言1 poll接口介绍3 代码编写4 总结 1 前言 上一篇文章我们学习了多路转接中的Select,其操作很简单,但有一些缺…

linux网络编程自定义协议和多进程多线程并发

1.三次握手及后面过程 计算机A是客户端, B是服务端 1.1三次握手: 1客户端给服务端SYN报文 2服务端返回SYNACK报文 3客户端返回ACK报文 客户端发完ACK后加入到服务端的维护队列中,accept()调用后就能和客户端建立连接,然后建立通讯 1.2关闭…

[CARLA系列--01]CARLA 0.9.15 在Windows下的安装教程(一)

Carla是一款开源的自动驾驶仿真器,它基本可以用来帮助训练自动驾驶的所有模块,包括感知系统,Localization, 规划系统等等.Carla这个产品目前已经更新到了最新的0.9.15版本,目前遇到好多人在windows系统上如何安装可编辑版的Carla遇到了好多问…

【Qt聊天室客户端】用户信息界面设置功能实现

1. 按钮禁用关系梳理 基本逻辑梳理 用户界面-申请好友按钮 只有当前用户不是你的好友时,该按钮才可以使用,否则是禁用状态 用户界面-发送消息与删除好友 当前用户是你的好友时,按钮才可以使用,否则这两个按钮禁用区分是否是你好…

一张图简单讲述Mamba的演进过程

这张图表提供了 RNN(1986)、LSTM(1997)、Transformer(2017)和 Mamba(2024)四种不同的神经网络架构在训练阶段、测试阶段和额外问题方面的对比。可以看出,Mamba 作为一种最…

redis v6.0.16 安装 基于Ubuntu 22.04

redis安装 基于Ubuntu 22.04 本文演示如何在ubuntu22.04下,安装redis v6.0.16,并配置测试远程访问。 Step1 更新环境 sudo apt updateStep2 安装redis sudo apt install redis-server -yStep3 启动 sudo systemctl restart redissudo systemctl sta…

Postman:高效的API测试工具

在现代软件开发中,前后端分离的架构越来越普遍。前端开发者与后端开发者之间的协作需要一种高效的方式来测试和验证API接口。在这个背景下,Postman作为一款强大的API测试工具,受到了广泛的关注和使用。 今天将介绍什么是Postman、为什么要使用…

Vue指令:v-else、v-else-if

目录 1.语法&#xff1a; 2. 题目 3.页面展示 4.结构 1.语法&#xff1a; 1.作用&#xff1a;辅助v-if进行判断渲染 2.语法&#xff1a;v-else 、v-esle-if"表达式" 2. 题目 <!DOCTYPE html> <html lang"en"> <head><meta chars…

RANSAC(随机抽样一致性算法)

RANSAC&#xff08;随机抽样一致性算法&#xff09;是一种用于估计数学模型参数的迭代方法&#xff0c;尤其适用于包含大量异常值的数据。使用 RANSAC&#xff0c;我们可以找到一个最优的线性拟合&#xff0c;同时最大限度地减少对异常值的影响。接下来&#xff0c;我将给出一个…

群控系统服务端开发模式-应用开发-业务架构逻辑开发第一轮测试

整个系统的第一个层次已经开发完毕&#xff0c;已经有简单的中控&#xff0c;登录、退出、延迟登录时长、黑名单、数据层封装、验证层封装、RSA加解密、Redis等功能&#xff0c;还缺获取个人、角色按钮权限、角色菜单权限功能。角色按钮权限以及角色菜单权限等明后天开发&#…

react基础之reactHooks

文章目录 React Hooks 使用指南常用 Hooks使用规则 小结 React Hooks 使用指南 React Hooks 是 React 16.8 引入的一种新特性&#xff0c;允许在函数组件中使用状态和其他 React 特性&#xff0c;而无需编写类组件。以下是一些基础的 Hooks 及其使用规则。 常用 Hooks useSta…

桑基图在医学数据分析中的更复杂应用示例

桑基图&#xff08;Sankey Diagram&#xff09;能够有效地展示复杂的流动关系&#xff0c;特别适合用于医学数据分析中的多种转归和治疗路径的可视化。接下来&#xff0c;我们将构建一个稍微复杂的示例&#xff0c;展示不同疾病患者在治疗过程中的流动&#xff0c;以及他们的治…