Linux基础——远程访问及控制(SSH)

news2024/12/23 3:12:57

Linux基础——远程访问及控制

  • 一、OpenSSH服务器
  • 二、sshd_config配置文件
  • 三、SSH服务端
      • 1.查询版本—— ssh -V
      • 2.SSH远程登录
      • 3.监听端口修改
      • 4.设置黑白名单
      • 5.远程复制——scp
      • 6.安全性传输——sftp
  • 四、SSH服务的验证
      • 1.SSH服务的两种验证方式
          • 密码验证
          • 密钥验证
      • 3.公钥与私钥的关系
      • 4.在客户端创建密钥对
      • 5.免交互验证
  • 五、TCP Wrappers 访问控制
      • 1.TCP wrappers (TCP封套)
      • 2.TCP Wrappers 保护机制的实现方式
      • 3.TCP Wrappers 访问策略

一、OpenSSH服务器

是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令。因此SSH协议具有很好的安全性。

SSH优点:
数据传输是加密的,可以防止信息泄漏
数据传输是压缩的,可以提高传输速度

OpenSSH 是实现 SSH 协议的开源软件项目,适用于各种 UNIX、Linux 操作系统,CentOS 7 系统默认安装并启动sshd服务
SSH客户端:Putty、Xshell、CRT
SSH服务端:OpenSSH
服务名称: sshd
默认端口号:tcp的22端口
服务端主程序: /usr/sbin/sshd
服务端配置文件: /etc/ssh/sshd_config
客户端配置文件: /etc/ssh/ssh_config

二、sshd_config配置文件

# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER    ##在开启selinux的系统上,修改ssh端口的要修改selinux规则,用此命令修改
#Port 22                                               ##默认ssh端口,生产环境中建议改成五位数的端口 
#AddressFamily any                                     ##地址家族,any表示同时监听ipv4和ipv6地址
#ListenAddress 0.0.0.0                                 ##监听本机所有ipv4地址
#ListenAddress ::                                      ##监听本机所有ipv6地址
HostKey /etc/ssh/ssh_host_rsa_key                      ##ssh所使用的RSA私钥路径
HostKey /etc/ssh/ssh_host_ecdsa_key                    ##ssh所使用的ECDSA私钥路径
HostKey /etc/ssh/ssh_host_ed25519_key                  ##ssh所使用的ED25519私钥路径
SyslogFacility AUTHPRIV                                ##设定在记录来自sshd的消息的时候,是否给出“facility code”
#LogLevel INFO                                         ##日志记录级别,默认为info 
#LoginGraceTime 2m                                     ##限定用户认证时间为2min
#PermitRootLogin yes                                   ##是否允许root账户ssh登录,生产环境中建议改成no,使用普通账户ssh登录
#StrictModes yes                                       ##设置ssh在接收登录请求之前是否检查用户根目录和rhosts文件的权限和所有权,建议开启
#MaxAuthTries 6                                        ##指定每个连接最大允许的认证次数。默认值是 6
#MaxSessions 10                                        ##最大允许保持多少个连接。默认值是 10 
#PubkeyAuthentication yes                              ##是否开启公钥验证
AuthorizedKeysFile      .ssh/authorized_keys           ##公钥验证文件路径
# HostbasedAuthentication                              ##指定服务器在使用 ~/.shosts ~/.rhosts /etc/hosts.equiv 进行远程主机名匹配时,是否进行反向域名查询
#IgnoreUserKnownHosts no                               ##是否在 RhostsRSAAuthentication 或 HostbasedAuthentication 过程中忽略用户的 ~/.ssh/known_hosts 文件
#IgnoreRhosts yes                                      ##是否在 RhostsRSAAuthentication 或 HostbasedAuthentication 过程中忽略 .rhosts 和 .shosts 文件
#PermitEmptyPasswords no                               ##是否允许空密码
PasswordAuthentication yes                             ##是否允许密码验证,生产环境中建议改成no,只用密钥登录
ChallengeResponseAuthentication no                     ##是否允许质疑-应答(challenge-response)认证
#KerberosAuthentication no                             ##是否使用Kerberos认证
#KerberosOrLocalPasswd yes                             ##如果 Kerberos 密码认证失败,那么该密码还将要通过其它的认证机制(比如 /etc/passwd)
#KerberosTicketCleanup yes                             ##是否在用户退出登录后自动销毁用户的 ticket
#KerberosGetAFSToken no                                ##如果使用了AFS并且该用户有一个 Kerberos 5 TGT,那么开启该指令后,将会在访问用户的家目录前尝试获取一个AFS token
GSSAPIAuthentication yes                               ##是否允许基于GSSAPI的用户认证
GSSAPICleanupCredentials no                            ##是否在用户退出登录后自动销毁用户凭证缓存
UsePAM yes                                             ##是否通过PAM验证
#GatewayPorts no                                       ##是否允许远程主机连接本地的转发端口
X11Forwarding yes                                      ##是否允许X11转发
#X11DisplayOffset 10                                   ##指定sshd(8)X11转发的第一个可用的显示区(display)数字。默认值是10
#X11UseLocalhost yes                                   ##是否应当将X11转发服务器绑定到本地loopback地址
#PrintMotd yes                                         ##指定sshd(8)是否在每一次交互式登录时打印 /etc/motd 文件的内容
#PrintLastLog yes                                      ##指定sshd(8)是否在每一次交互式登录时打印最后一位用户的登录时间
#TCPKeepAlive yes                                      ##指定系统是否向客户端发送 TCP keepalive 消息
#UseLogin no                                           ##是否在交互式会话的登录过程中使用 login(1
#UsePrivilegeSeparation sandbox                        ##是否让 sshd(8) 通过创建非特权子进程处理接入请求的方法来进行权限分离
#PermitUserEnvironment no                              ##指定是否允许sshd(8)处理~/.ssh/environment以及 ~/.ssh/authorized_keys中的 environment= 选项
#Compression delayed                                   ##是否对通信数据进行加密,还是延迟到认证成功之后再对通信数据加密
#ClientAliveInterval 0                                 ##sshd(8)长时间没有收到客户端的任何数据,不发送"alive"消息 
#ClientAliveCountMax 3                                 ##sshd(8)在未收到任何客户端回应前最多允许发送多个"alive"消息,默认值是 3 
#UseDNS no                                             ##是否使用dns反向解析
#PidFile /var/run/sshd.pid                             ##指定存放SSH守护进程的进程号的路径
#MaxStartups 10:30:100                                 ##最大允许保持多少个未认证的连接
#PermitTunnel no                                       ##是否允许tun(4)设备转发
#Banner none                                           ##将这个指令指定的文件中的内容在用户进行认证前显示给远程用户,默认什么内容也不显示,"none"表示禁用这个特性
Subsystem    sftp    /usr/libexec/openssh/sftp-server  ##配置一个外部子系统sftp及其路径
#Match User anoncvs                                    ##引入一个条件块。块的结尾标志是另一个 Match 指令或者文件结尾     
AllowUsers                                             ##设置白名单,需手动添加
DenyUsers                                              ##设置黑名单,需手动添加

三、SSH服务端

ssh服务端主要包括两个服务功能:ssh远程连接和sftp服务.
作用:SSHD服务使用SSH协议可以用来远程控制,或在计算机之间传送文件
相比较之前用Telent方式传输文件要安全很多,因为Telent是明文件传输,SSH是加密传输

1.查询版本—— ssh -V

在这里插入图片描述

2.SSH远程登录

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

在这里插入图片描述

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

在这里插入图片描述

3.监听端口修改

在这里插入图片描述
重启服务:systemctl restart sshd
使用另一台客户机进行远程登录
在这里插入图片描述

4.设置黑白名单

在这里插入图片描述
在这里插入图片描述

5.远程复制——scp

在这里插入图片描述

6.安全性传输——sftp

在这里插入图片描述

四、SSH服务的验证

1.SSH服务的两种验证方式

当密码验证和密钥验证同时开启时,服务器会优先使用密钥对验证

密码验证

对服务器中本地系统用户的登录名称、密码进行验证。这种方式使用最为简便,但从客户端角度来看,正在连接的服务器有可能会被假冒;从服务器角度来看,当遭遇密码暴力破解攻击时防御能力较弱。

密钥验证

密钥对验证:要求提供相匹配的密钥才能进行验证通过,通常先在客户端中创建一对密钥文件(公钥和私钥),然后将公钥文件放到服务器中指定位置,远程登录时,系统会使用公钥和私钥进行加密/解密关联验证,增加安全性,且可以免密交互登录。

3.公钥与私钥的关系

公钥和私钥是成对生成的,这两个密钥互不相同,可以互相加密和解密
不能根据一个密钥来推算另一个密钥
公钥对外公开,私钥只有私钥持有人才知道

4.在客户端创建密钥对

通过ssh-keygen 工具为当前用户创建密钥对文件。可用的加密算法为:RSA、ECDSA、或DSA等(-t是指定算法类型)

在这里插入图片描述
在这里插入图片描述

5.免交互验证

在这里插入图片描述
在这里插入图片描述

五、TCP Wrappers 访问控制

在Linux系统中,许多网络服务针对客户端提供了访问控制机制,如Samba、BIND、HTTPD、OpenSSH 等TCP wrappers将TCP服务程序"包裹"起来,代为监听TCP服务程序的端口,增加了一个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正的服务程序。

1.TCP wrappers (TCP封套)

将tcp服务程序包裹起来,代为监听tcp服务程序的端口,增加了一个安全检测过程,外来的连接请求必须通过这层安全检测,获得许可后才能进访问真正的服务程序,TCP Wrappers 是大部分Linux 发行版默认提供的功能

2.TCP Wrappers 保护机制的实现方式

1.直接使用tcpd程序对其他服务程序进行保护,需要运行tcpd程序。
2.由其他网络服务程序调用libwrap.so.*链接库,不需要运行tcpd程序。此方式的应用更加广泛,也更有效率。

  • 使用 ldd 命令可以查看程序的libwrap.so.*链接库
    在这里插入图片描述

3.TCP Wrappers 访问策略

  • 为各种网络服务程序,针对访问服务的客户端地址进行访问控制,对应的策略文件为 /etc/hosts.allow/etc/hosts.deny分别来设置允许和拒绝访问
    语法:[服务程序列表]:[客户端地址列表]

  • 先检查 /etc/hosts.allow 文件,密钥则检查 /etc/hosts.deny 文件,若都没有相匹配的策略,则全部允许访问

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

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

相关文章

ORA-04021:等待锁定对象时发生超时

现场人员反馈问题,drop表报错,如下图 是个rac环境,处理过程 1、2个节点上查看锁表,没任何输出 SYSorcl2> select name from v$db_object_cache where ownerUSR_DATAI and type in(PROCEDURE,FUNCTION) and locks > 0 and …

软件版本号

版本号 上图是在MVN仓库中随便找的一个依赖的历 史版本 我们可以发现版本号一般是由 数字英文 组成 数字 一般大家都会看到1.x或者1.xx.xxx.Beta这种版本号,前面是数字 以 1.xx.xxx 为例 1是major号,一般重大更新会更新major号.xx或者.xx.xxx称为min…

arduino学习笔记1

一.hello word实验 1.基础结构 void setup() {// put your setup code here, to run once://设置初始状态,比如引脚、波特率等 }void loop() {// put your main code here, to run repeatedly://相当于main函数,但一直循环 }2.Serial(串行通…

像素是什么

像素分为设备像素和设备无关像素。 下面说说来龙去脉。 一、显示器 显示图像的电子设备。 (一)显示器种类 1.LCD LCD(Liquid crystal display),是液体晶体显示,也就是液晶显示器,LCD具有功耗低…

谷歌 Google Cloud 安装 NodeJS服务环境

目录 1. 安装 wget2. 安装 Node2.1 下载安装包2.2 安装包解压2.3 3 安装全局包并创建软链接 3. 安装 git 创建实例略过,点击 SSH 按钮, 在浏览器中打开SSH客户端 注: 本文基于 CentOS 9服务器操作系统 为了方便后面工具插件的顺利安装&a…

用PHP实现经典的4种排序算法

文章目录 一、前言二、4种排序算法2.1 快速排序2.2 插入排序2.3 选择排序2.4 冒泡排序 总结 一、前言 排序算法是一种将一组无序的数据元素按照某个规则(大小、字母序等)排列成有序的序列的算法。常见的排序算法包括冒泡排序、选择排序、插入排序、快速排序、归并排序等。 1.冒…

Python批量梯度下降法的举例

梯度下降法 梯度下降法是一种常用的优化算法,用于求解目标函数的最小值。其基本思想是,通过不断地朝着函数梯度下降的方向更新参数,直到找到函数的最小值。 具体来说,假设我们有一个可导的目标函数 f ( x ) f(x) f(x)&#xff…

项目五:使用路由器构建园区网

使用路由器构建园区网 1、新建拓扑2、配置交换机与主机3、配置路由交换机并进行通信4、通信测试5、配置路由器并进行通信测试1、配置路由器R-12、配置路由器R-2、R-33、通信测试 1、新建拓扑 依次添加四台主机,两台交换机,型号为S3700。两台路由交换机&…

体制内干部职务职级及领导干部排序对应关系大全

请点击↑关注、收藏,本博客免费为你获取精彩知识分享!有惊喜哟!! 一、公务员级别对应关系 (一)综合管理公务员职务与职级 1、职务分为10级,包括:正国职、副国职、正部职、副部职、正…

【WSN定位】基于加权双曲线的Dvhop定位算法【Matlab代码#16】

文章目录 1. 原始Dvhop定位2. 基于双曲线的Dvhop定位3. 对原始模型加权4. 部分代码5. 结果展示6. 资源获取7. 参考文献 1. 原始Dvhop定位 可参考Dvhop定位算法 2. 基于双曲线的Dvhop定位 双曲线定位算法是一种通过将待定位节点定位在以锚节点为焦点、两锚节点之间距离为焦距…

字符集与字符编码(ASCII、GBK、UNICODE)

1 常见编码 1.1 单字节编码:ASCII ASCII使用1个字节(8个bit)来记录一组常用字符,见下表: 例如其中字母a的二进制位:1100 001 97,那么a在计算机中就可以用1100001来保存。 注意上表中其实只…

【02-Java Web先导课】-Tomcat服务器的下载与安装

文章目录 前言一、Tomcat服务器(apache-tomcat-8.5.28)的 下载1、下载地址 二、Tomcat服务器的安装1、Tomcat目录结构2、Tomcat的启动与停止4、Tomcat启动成功后的测试 免责声明: 前言 Tomcat主要实现了Java EE中的Servlet、JSP规范&#xf…

【Python爬虫项目实战三】Ddddocr识别Ocr过开放猫验证码(接Authorization认证更新)

目录 🍇前言🍍验证码识别的几个方法🥥百度AI开放平台🥥Ddddocr🦑分析验证码位数🦑获取验证码接口🦑算法识别匹配🦑请求登陆接口 🍋总结: 🍇前言 …

Doris(13):数据模型

在 Doris 中,数据以表(Table)的形式进行逻辑上的描述。一张表包括行(Row)和列(Column)。Row即用户的一行数据。Column 用于描述一行数据中不同的字段。 Column可以分为两大类:Key&a…

Java双亲委派和类加载器

Java双亲委派和类加载器 Java类生命周期主要内容类加载器的分类Bootstrap ClassLoader非Bootstrap ClassLoaderExtension ClassLoaderApplication ClassLoaderUser ClassLoader 类加载的命名空间问题提出双亲委派机制问题解答 破坏双亲委派破坏双亲委派-第一次破坏双亲委派-第二…

【MySQL】GROUP BY分组子句与联合查询的使用详解

目录 前篇都在这里喔~ MySQL的增删改查 MySQL数据库约束和聚合函数的使用 1.GROUP BY子句 练习表如下: 1.查询不包含董事长的平均工资 2.按照角色分组计算平均工资 3.过滤掉平均工资大于一万的角色 4.♥过滤数据♥ 2.联合查询 以下列表作为依据 1.内连接 …

(十二)rk3568 NPU 中部署自己训练的模型,(1)使用yolov5训练自己的数据集-环境搭建部分

rk3568中带有0.8T算力的NPU,可以完成一些轻量级的图像识别任务。 本文向零基础人员介绍从windows中搭建训练环境,模型训练、模型转换到rknn模型部署到电路板上全部过程。 rk3568npu支持caffe、darknet、onnx、pytorch、tensorflow等多种框架。 本人使用…

springboot+vue企业人事人力资源管理系统java公司员工出差考勤办公OA系统

“简易云”是这个系统的名字 (6)系统管理:主要下拉分为角色管理、菜单管理; 角色管理:此页面可对角色进行增删改查操作,可修改不同角色的权限; 菜单管理:此页面可配置系统可展示的菜…

linux学习记录 和文件系统相关的命令

记录过程,会有错误,硬链接与软链接哪里可能没有说清楚 文件,目录操作命令 pwd 获取当前处于哪个目录当中,返回的是绝对路径 [rootlocalhost home]# pwd /homecd cd 相对/绝对路径 切换目录的,change directory .代表当前目录 …代表上一级…

【C++学习】类和对象--对象特性(1)

构造函数和析构函数 对象的初始化和清理是两个非常重要的安全问题 一个对象或变量没有初始状态,对其使用后果是未知的 使用完一个对象或变量,没有及时清理,也会造成一定的安全问题 C利用构造函数和析构函数解决上述问题,这两个函数…