远程访问及控制

news2024/9/21 12:43:30

目录

一、SSH远程管理

1)SSH的简介

2)SSH的优点

3)常用的SSH软件的介绍

4)SSH 的组成

5)SSH的密钥登录

密钥登录的过程:

二、SSH的运用

1 )SSH配置文件信息

2)存放ssh服务端的配置文件

3)存放ssh客户端的配置文件

4)ssh在Linux中的密码登录

4)利用ssh协议传输文件和获取文件

5)scp传输文件

6)scp获取服务端的文件 

7)sftp远程访问操作

三、ssh密钥登录操作

实验目的

实验准备 

实验设计图

​编辑

实验验证

实验步骤

第一步:在客户端中创建密钥

第二步:把公钥文件导入到ssh服务端

方式1:手动导公钥进服务器

方式2:自动导公钥入服务器

第三步:进行测试

测试一:客户端zhangsan访问服务端root 

测试二:客户端root访问服务端root

测试三:客户端zhangsan  访问服务端wangwu

四、TCP_wapper的原理和运用 

1)TCP_wapper的工作原理

2)TCP_Wrappers的运用

假设引用

白名单设置:

测试

总结


一、SSH远程管理

telnet与ssh区别

telnet 明文 23

ssh 密文 22

检查是否开启开机自启

systemctl is-enabled ssh

1)SSH的简介

SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程 复制等功能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH 为建立在应用层和传输层基础上的安全协议。对数据进行压缩,加快传输速度

作用:SSHD 服务使用 SSH 协议可以用来进行远程控制,或在计算机之间传送文件

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

Centos 7系统默认已安装openssh相关软件包,并将sshd 服务添加为开机自启动。

执行"systemctl start sshd"命令即可启动sshd 服务

sshd 服务默认使用的是TCP的22端口,安全协议版本sshv2,出来2之外还有1(有漏洞)

OpenSSH

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

2)SSH的优点

SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。S S H最初是U N I X系统上的一个程序,后来又迅速扩展到其他操作平台。S S H在正确使用时可弥补网络中的漏洞。客户端包含ssh程序以及像scp(远程拷贝)、slogin(远程登陆)、sftp(安全文件传输)等其他的应用程序

  • 数据传输的过程是加密的,具有安全稳定的特点
  • 数据传输的方式是压缩的,可以提高传输速度

3)常用的SSH软件的介绍

SSH客户端:putty(开源工具),xshell,CRT

SSH服务端:openSSH(centos7系统默认安装)

centos7  ssh服务启动自检命令:  systemctl is-enabled    sshd

4)SSH 的组成

传输层协议 [SSH-TRANS]

提供了服务器认证,保密性及完整性。此外它有时还提供压缩功能。 SSH-TRANS 通常运行在TCP/IP连接上,也可能用于其它可靠数据流上。 SSH-TRANS 提供了强力的加密技术、密码主机认证及完整性保护。该协议中的认证基于主机,并且该协议不执行用户认证。更高层的用户认证协议可以设计为在此协议之上

用户认证协议 [SSH-USERAUTH]

用于向服务器提供客户端用户鉴别功能。它运行在传输层协议 SSH-TRANS 上面。当SSH-USERAUTH 开始后,它从低层协议那里接收会话标识符(从第一次密钥交换中的交换哈希H )。会话标识符唯一标识此会话并且适用于标记以证明私钥的所有权。 SSH-USERAUTH 也需要知道低层协议是否提供保密性保护

连接协议 [SSH-CONNECT]

将多个加密隧道分成逻辑通道。它运行在用户认证协议上。它提供了交互式登录话路、远程命令执行、转发 TCP/IP 连接和转发 X11 连接

5)SSH的密钥登录

密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数。密钥分为对称密钥与非对称密钥。而ssh密钥就是一种非对称性的密钥

ssh 远程访问控制中不仅仅可以使用用户密码登录,还可以通过 密钥进行登录。而密钥登录的产生是通过客户端与服务端进行一系列的操作过程产生的。

密钥登录的过程:

  1. ssh客户端通过ssh-keygen生成自己的公钥和私钥,将公钥发送给ssh服务端,并且放在指定的位置。
  2. 公钥发送完毕后。ssh客户端再向ssh 服务端进行登录请求。
  3. ssh服务端收到ssh客户端的登录请求后,ssh服务端用对应的公钥加密一些随机数返回给ssh客户端。
  4. ssh客户端收加密的随机数后使用私钥对其进行解密,再将解密的结果发送给ssh服务端进行验证。
  5. ssh服务端接收到ssh客户端发送过来的解密数据,将其与原数据进行比对,保持一致则允许用户进行登录

 


二、SSH的运用

1 )SSH配置文件信息

  • sshd服务的配置文件默认位于/etc/ssh/sshd_config,正确调整相关配置项,可以进一步提高sshd远程登录的安全性,下面介绍最常用的一些配置项,关于sshd_config文件的更多配置可参考man手册页
  • Port 22   监听的端口(默认22),也可以使用多个Port,即重复使用 Port 这个配置项。
  • #例如想要开放sshd端口为 22和222,则添加如下内容
  • Port 22
  • Port 222
  • #然后重新启动sshd这样就好了。 建议大家修改 port number 为其它端口。防止别人暴力破解。
  • ListenAddress  0.0.0.0   监听的IP地址(默认监听所有IP)
  • 设置sshd服务器绑定的IP地址,0.0.0.0 表示侦听所有地址, 这个值可以写成本地IP地址也可以写成所有地址
  • SyslogFacility AUTHPRIV 当有人使用 SSH 登入系统的时候,SSH 会记录信息,这个信息要记录的类型为AUTHPRIV
  • sshd服务日志存放在: /var/log/secure 
  • 为什么sshd配置文件中没有指定日志,但日志却存放在了:/var/log/secure ?
  • # vim /etc/rsyslog.conf  查看:

  • LogLevel  INFO  日志记录的等级!INFO级别以上。
  • UseDNS   no    禁用dns反向解析,一般来说,为了要判断客户端来源是正常合法的,因此会使用DNS去反查客户端的主机名,不过如果是在内网互连,设定为 no 会让联连接速度比较快
  • PermitRootLogin  no    禁止ROOT用户远程登录
  • PermitEmptyPasswords  no   禁止密码为空的用户远程登录
  • LoginGraceTime  2m  限制用户登录验证过程的时间(默认为2分钟),即在多久时间内没有成功连上 SSH server 就强迫断线!若无单位则默认时间为秒。可以根据实际情况来修改实际
  • MaxAuthTries  6     限制用户登录验证过程的最大重试次数
  • DenyUsers  zhangsan  lisi   拒绝XX用户远程登录系统,其他均允许
  • AllowUsers  jerry  admin@61.23.24.25   允许jerry在任何何IP的主机上远程登录,允许admin只能在主机61.23.24.25登录 ,其他均拒绝(不要同时使用AllowUsers和DenyUsers配置)
  • PasswordAuthentication   yes   是否启用密码验证
  • PubkeyAuthentication   yes     是否启用密钥对验证
  • AuthorizedKeysFile    .ssh/authorized_keys    指定保存各用户公钥内容的数据文件位置,默认保存用户公钥信息的文件位于(服务器某个用户宿主目录下的)
  • PrintLastLog  yes    显示上次登入的信息,如上次登入的时间、地点等等,默认是yes
  • PrintMotd  yes  登入后是否显示出一些信息,即打印出 /etc/motd这个文档的内容。
  • 例如给sshd服务添加一些警告信息
  • 修改/etc/motd
  • # cat /etc/motd 
  • # echo 'Warning ! From now on, all of your operation has been record!'> /etc/motd
  • 测试:连接ssh,显示结果

  • 配置文件sshd_config修改后,重启sshd服务
  • #systemctl  restart  sshd

2)存放ssh服务端的配置文件

vim /etc/ssh/sshd_config
 
常用选项配置
 
#Port 22
#ListenAddress 0.0.0.0

常用配置项

#LoginGraceTime 2m         登录验证时间为两分钟
#PermitRootLogin yes       允许root用户登录(安全考虑,这里可以设置为no,禁止root用户登录)
 
#MaxAuthTries 6             最大重试的次数为6
PasswordAuthentication yes   允许空密码用户登录
UseDNS  no                   禁止DNS反向解析,提高服务器的响应速度

3)存放ssh客户端的配置文件

 /etc/ssh/ssh_config   (该配置基本默认保持不变,就可以了)

4)ssh在Linux中的密码登录

ssh [远程主机用户名]@[远程服务器主机名或IP地址] [-p port]

[root@localhost7 ~]# ssh 192.168.73.110
 
exit  退出当前用户

[root@localhost7 ~]# ssh -p 22  zhangsan@192.168.73.110

4)利用ssh协议传输文件和获取文件

 ssh scp sftp 都是默认使用ssh协议,端口为 tcp 22

5)scp传输文件

 scp [-r 目录] 文件 [用户]@服务端IP:保存路径(如果端口号修改过,就用-P进行指定)

[root@localhost6 opt]# scp shiyan.zip root@192.168.73.111:/opt

6)scp获取服务端的文件 

 scp [-P] [用户]@服务端IP:保存路径 本地路径

[root@localhost6 opt]# scp root@192.168.73.111:/opt/shiyan.zip   /opt

7)sftp远程访问操作

sftp [-P] 用户@服务端IP   (当默认端口改变时,可以用-P指定)

[root@localhost6 opt]# sftp root@192.168.73.111


三、ssh密钥登录操作

实验目的

上面的内容均为在密码登录的前提,但是存在着极大的安全隐患。密码登录是可以别破译密码软件进行暴力破解,从而远程访问,此时会造成相关的损失。而密钥登录,会对安全性访问更有利

实验准备 

准备两台虚拟机,一台当作ssh客户端,一台当作ssh服务端,检查一下ssh相关服务的软件包和功能是否正常即可

实验设计图

实验验证

一组密钥对是客户端的某一个用户和服务端的某一个用户之间建立的联系,其他用户无法使用该密钥获取登录

实验步骤

第一步:在客户端中创建密钥

[root@localhost6 ~]# ssh-keygen -t rsa

[zhangsan@localhost ~]$ cd /home/zhangsan/.ssh
[zhangsan@localhost .ssh]$ ls

第二步:把公钥文件导入到ssh服务端

方式1:手动导公钥进服务器

[zhangsan@localhost .ssh]$ scp id_rsa.pub  root@192.168.73.111:/opt

切换到服务端,安置公钥 

cd /opt/
ls
 
vim /root/.ssh/authorized_keys

末行模式
 
:!cat /opt/id_rsa.pub 

并且保存退出

方式2:自动导公钥入服务器

ssh-copy-id -i 公钥文件 用户@服务端IP

第三步:进行测试

测试一:客户端zhangsan访问服务端root 

[zhangsan@localhost .ssh]$ ssh root@192.168.73.111

测试二:客户端root访问服务端root

[root@localhost ~]# ssh root@192.168.73.111

测试三:客户端zhangsan  访问服务端wangwu

[zhangsan@localhost .ssh]$ ssh wangwu@192.168.73.111


四、TCP_wapper的原理和运用 

1)TCP_wapper的工作原理

TCP_Wrappers有一个TCP的守护进程叫作tcpd。以ssh为例,每当有ssh的连接请求时,tcpd即会截获请求,先读取系统管理员所设置的访问控制文件,符合要求,则会把这次连接原封不动的转给真正的ssh进程,由ssh完成后续工作;如果这次连接发起的ip不符合访问控制文件中的设置,则会中断连接请求,拒绝提供ssh服务

2)TCP_Wrappers的运用

/etc/hosts.allow 设置允许访问 tcp 服务程序的策略(白名单)

/etc/hosts.deny 设置禁止访问 tcp 服务程序的策略    (黑名单)

假设引用

只允许IP地址为192.168.73.110的用户访问sshd服务,其他地址被拒绝。

白名单设置:

vim   /etc/hosts.allow 
 
 sshd:192.168.73.110
                                 

如果不确定该服务是否符合TCP_wapper的标准:

[root@localhost ~]# ldd $(which sshd)|grep wrap

黑名单设置:

vim  /etc/hosts.deny
 
sshd:ALL

保存后,立即生效! 

测试

测试一:指定允许的客户端使用

测试二:其他客户端进行访问

黑名单和白名单的设置原理:先看 hosts.allow 文件中的设置,匹配上则直接放通,如果没有匹配则 再去看 hosts.deny 文件中的设置,匹配上则禁止/拒绝访问指定的tcp服务程序,如果也没有匹配上则默认允许放通


总结

ssh 密钥对配置

客户端 ssh的发起端:ssh-keygen -t rsa/ecdsa 创建密钥对,在自己家目录的.ssh目录中生成 私钥和公钥文件(XXX.pub)

                                   ssh-copy-id -i 公钥文件 目标主机用户@目标主机IP/主机名

服务端 被ssh连接端   在指定用户家目录的.ssh目录中生成公钥认证文件 authorized_keys

从此客户端 ssh [-p 端口] 用户@IP 使用密钥对的密码验证

1. 熟知ssh密钥生成的过程,用于对ssh访问的加密,符合更安全的远程控制标准

2.当我们获得一台新的服务器时,为了更安全,取消掉root用户的远程访问

3.ssh中有更高效的传输获取功能,可以加以利用。

4.TCP_Wrappers中的黑白名单,可以大量高效的设置可访问服务端的用户及其能够访问的服务

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

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

相关文章

JAVA 进程CPU过高排查

1. top命令看一下JAVA进程: 占用500%多,非常恐怖,程序卡得动不了了。 2. 使用命令top -H -p PID 此处PID就是上一步获取的进程PID,我的PID是13342,通过此命令可以查看实际占用CPU最高的的线程的ID,此处几位…

ChatGPT+Ai绘图【stable-diffusion实战】

ai绘图 stable-diffusion生成【还有很大的提升空间】 提示词1 Picture a planet where every living thing is made of light. The landscapes are breathtakingly beautiful, with mountains and waterfalls made of swirling patterns of color. What kind of societies m…

【学习笔记】unity脚本学习(五)【常用的方法函数Destroy、Instantiate 、SendMessage、invoke 、Coroutine】

目录 常用的方法函数Object体系结构MonoBehaviour复习继承的变量 继承自Object的方法Destroy 物体的销毁DestroyImmediate 立即销毁对象(强烈建议您改用 Destroy)Object.DontDestroyOnLoadObject.Instantiate 物体的生成类子弹生成案例 继承自Component的…

八股+面经

文章目录 项目介绍1.不动产项目数据机器学习算法调研图像提取算法调研数据集-ImageNetXceptionVGGInceptionDensenetMobilenet 2.图书项目技术栈面试问题 Java基础MapHashMap v.s Hashtable(5点)ConcurrentHashMap v.s Hashtable(2点)代理模式1. 静态代理2. 动态代理2.1 JDK 动…

什么样的人适合学习网络安全?怎么学?

有很多想要转行网络安全或者选择网络安全专业的人在进行决定之前一定会有的问题:什么样的人适合学习网络安全?我适不适合学习网络安全? 会产生这样的疑惑并不奇怪,毕竟网络安全这个专业在2017年才调整为国家一级学科,…

elasticsearch——数据同步

目录 数据同步思路分析 方案一:同步调用 方案二:异步通知 方案三:监听binlog 区别 关于elasticsearch与数据库数据同步 导入课前资料提供的hotel-admin项目,启动并测试酒店数据的CRUD 声明exchange、queue、RoutingKey 导…

Python列表和字典前面为什么会加星号(**)?

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 python 中,单星号*和双星号**除了作为“乘”和“幂”的数值运算符外, 还在列表、元组、字典的操作中有着重要作用。 一、列表(list)、元组(tuple&#xff09…

flac格式如何转换为mp3,这3个方法超好用

随着音频格式的不断创新和发展,每种格式对应不同的特点。比如像flac格式可以提供无损音质的体验,但它的文件大小却是相对较大,不太适合在普通设备上进行传输和使用。而mp3作为一种流行的音频格式,它的压缩率较高,不但可…

OceanBase 4.1解读:我们想给用户一个开箱即用的OceanBase部署运维工具

欢迎访问 OceanBase 官网获取更多信息:https://www.oceanbase.com/ 关于作者 肖磊 OceanBase 产品专家 负责 OceanBase 运维管控体系产品规划与设计,包括安装部署工具(OBD、OAT)、运维管控平台(OCP、OCP Express),致力…

MySQL安装步骤详解

MySQL环境搭建 MySQL的下载 MySQL的4大版本 MySQL Community Server 社区版本,开源免费,自由下载,但不提供官方技术支持,适用于 大多数普通用户。 MySQL Enterprise Edition 企业版本,需付费,不能在线下载…

运行torch心得体会

遇到的问题: ①ModuleNotFoundError: No module named torch ②‘conda‘不是内部或外部命令,也不是可运行的程序或批处理文件。 ③import torch 提示找不到指定的模块visual C redistributable is not installed 过程: 用前一段时间就下…

流程图拖拽视觉编程--概述

一般的机器视觉平台采用纯代码的编程方式,如opencv、halcon,使用门槛高、难度大、定制性强、开发周期长,因此迫切需要一个低代码开发的视觉应用平台。AOI缺陷检测的对象往往缺陷种类多,将常用的图像处理算子封装成图形节点,如抓直…

「C/C++」C/C++强制类型转换

博客主页:何曾参静谧的博客 文章专栏:「C/C」C/C学习 目录 相关术语C语言中的强制类型转换C中的强制类型转换static_castdynamic_castreinterpret_castconst_cast 注意事项 相关术语 强制类型转换:是指将一个数据类型强制转换为另一个数据类型…

magic Grid

说明文档 A lightweight Javascript library for dynamic grid layoutshttps://vuejsexamples.com/a-lightweight-javascript-library-for-dynamic-grid-layouts/npm npm install magic-grid cnd <script src"https://unpkg.com/magic-grid/dist/magic-grid.cjs.js…

【C++ 七】类和对象:封装、继承、多态、友元、运算符重载

封装、继承、多态、对象的初始化和清理、C对象模型和this指针、友元、运算符重载 文章目录 封装、继承、多态、对象的初始化和清理、C对象模型和this指针、友元、运算符重载前言1 封装1.1 封装的意义1.1.1 封装意义一1.1.2 封装意义二 1.2 struct 和 class 区别1.3 成员属性设置…

数据结构——二叉树的修改与构造

数据结构——二叉树的修改与构造 一、修改二叉树226. 翻转二叉树1.前/后序递归2.广度优先搜索迭代3.拓展&#xff1a;修改中序遍历 / 中序统一迭代写法 114. 二叉树展开为链表 二、构造二叉树106. 从中序与后序遍历序列构造二叉树递归思路 105. 从前序与中序遍历序列构造二叉树…

Java day11

第11章 在用户界面上排列组件 11.1 基本的界面布局11.1.1 布置界面11.1.2 顺序布局11.1.3 方框布局11.1.4 网格布局11.1.5 边框布局 11.2 使用多个布局管理器11.3 卡片布局11.3.1 在应用程序中使用卡片布局11.3.2 单元格内边距和面板内边距 11.1 基本的界面布局 11.1.1 布置界…

瑞芯微rk3568移植openbmc(五)----关于novnc h265 webcodec硬解码

本章没有什么实质内容&#xff0c;其实在第四节调好了H264的webcodec以后&#xff0c;H265仅仅只需要改下参数&#xff0c;其他的都交给webgl去处理就行了&#xff0c;没有什么大的变化&#xff0c;vp8、vp9、h264、h265处理都一样&#xff0c;仅仅只是参数的变化&#xff0c;不…

Winform粉丝提问1——winform怎么在设计界面找到代码里的控件

前言&#xff1a; 今天订阅《Winform从入门到精通》的粉丝在VIP群里面问我一个问题&#xff0c;我感觉这个问题应该是初学者都会遇到的&#xff0c;所以我写了这篇文章来帮助初学者来理解这个问题&#xff0c;问题如下&#xff1a; 假设我在Form1界面上添加了两个Label&#x…

建筑行业为什么要数字化转型?

建筑行业为什么要数字化转型&#xff1f; 建筑行业作为国民经济的重要支柱产业之一&#xff0c;其生产过程繁琐、复杂&#xff0c;且产业链条长&#xff0c;涉及众多领域。 然而&#xff0c;目前传统的建筑模式已经无法适应行业的发展需求&#xff0c;建筑行业的数字化转型已…