远程访问及控制

一、SSH远程管理

        SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录.远程复制等功能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令。与早期的Telent(远程登录)、RSH(Remote Shell,远程执行命令)、RCP(Remote File Copy,远程文件复制)等应用相比.SSH协议提供了更好的安全性。

        将以OpenSSH为例,介绍Linux服务器的远程管理及安全控制。OpenSSH是实现SSH协议的开源软件项目,适用于各种LNIX、Linux操作系统。关于OpenSSH项目的更多内容可以访问其官方网站http: / /www . openssh.com。

二、配置OpenSSH服务端

        在CentOS 7,3系统中,OpenSSH 服务器由openssh、openssh一server等软件包提供(默认已安装),并已将sshd添加为标准的系统服务。执行“systemctl start sshd”命令即可启动sshd服务.包括root在内的大部分用户(只要拥有合法的登录Shell)都可以远程登录系统。

        sshd服务的配置文件默认位于/etc/ssh/sshd_config目录下,正确调整相关配置项,可以进一步提高shd远程登录的安全性。下面介绍最常用的一些配置项,关于sshd_config文件的更多配置可参考man手册页。

1、服务监听选项

        sshd服务使用的默认端口号为22,必要时建议修改此端口号.并指定监听服务的具体Р地址.以提高在网络中的隐蔽性。除此之外,SSH协议的版本选用V2比V1的安全性要更好.禁用DNS反向解析可以提高服务器的响应速度。

[root@lucky ~]# vim /etc/ssh/sshd_config 
17 Port 22                            //监听端口为22
19 ListenAddress 192.168.223.0        //监听地址为192.168.223.0网段
21 Protocol 2                         //使用SSH V2协议
115 UseDNS no                         //禁用DNS反向解析
.........                      
[root@lucky ~]# systemctl start sshd

2、用户登录控制

        sshd 服务默认允许root用户登录.但在Internet中使用时是非常不安全的。普遍的做法如下:先以普通用户远程登入,进入安全Shell环境后,根据实际需要使用su命令切换为root用户。
        关于sshd服务的用户登录控制通常应禁止root用户或密码为空的用户登录。另外,可以限制登录验证的时间(默认为⒉分钟)及最大重试次数,若超过限制后仍未能登录则断开连接。

[root@lucky ~]# vim /etc/ssh/sshd_config 37 LoginGraceTime 2m          //登录验证时间为2分钟 38 #PermitRootLogin yes       //禁止root用户登录40 MaxAuthTries 6             //最大重试次数为664 PermitEmptyPasswords no    //禁止空密码用户登录
...................
[root@lucky ~]# systemctl start sshd

        当希望只允许或禁止某些用户登录时.可以使用AllowUsers 或 DenyUsers配置,两者用法类似(注意不要同时使用)。例如,若只允许jerry、tsengyia和acmin 用户登录.且其中 admin 用户仅能够从P地址为61,23.24.25的主机远程登录,则可以在/etc/ssh/sshd_config配置文件中添加以下配置。

3、登录验证方式 

        对于服务器的远程管理,除了用户账号的安全控制以外.登录验证的方式也非常重要。sshd 服务支持两种验证方式---密码验证.密钥对验证,可以设置只使用其中一种方式,也可以两种方式都启用。

        (1)密码验证:对服务器中本地系统用户的登录名称.密码进行验证。这种方式使用最为简便,但从客户端角度来看,正在连接的服务器有可能被假冒﹔从服务器角度来看,当遭遇密码穷举(暴力破解)攻击时防御能力比较弱。
        ()密钥对验证:要求提供相匹配的密钥信息才能通过验证。通常先在客户端中创建-对密钥文件(公钥、私钥).然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用公钥、私钥进行加密/解密关联验证,大大增强了远程管理的安全性。该方式不易被假冒.且可以免交互登录,在Shell中被广泛使用。

[root@lucky ~]# vim /etc/ssh/sshd_config 
PasswordAuthentication yes                   //启用密码认证
AuthorizedKeysFile    .ssh/authorized_keys   //启用密钥对认证
PubkeyAuthentication yes                     //指定公钥库文件
.............
[root@lucky ~]# systemctl start sshd

三、使用SSH客户端程序

1、命令程序ssh、scp、sftp

(1)通过ssh命令可以远程登录sshd服务.为用户提供一个安全的Shell环境,以便对服务器进行管理和维护.使用时应指定登录用户、目标主机地址作为参数。若要登录主机192.168.223.128,以对方服务器的王五

[root@deft ~]# ssh wangwu@192.168.223.128
wangwu@192.168.223.128's password: 
Last failed login: Wed Dec 27 00:59:29 CST 2023 from 192.168.223.100 on ssh:notty
There were 4 failed login attempts since the last successful login.[wangwu@lucky ~]$ whoami 
wangwu
[wangwu@lucky ~]$ /sbin/ifconfig ens33 | grep 'inet'inet 192.168.223.128  netmask 255.255.255.0  broadcast 192.168.223.255

        如果sshd服务器使用了非默认的端口号(如22),则在登录时必须通过“一p”选项指定端口号。例如,执行以下操作将访问主机192.168.4.22的22端口,以对方服务器的wangwu用户验证登录。

[root@deft ~]# ssh -p 22 wangwu@192.168.223.128
wangwu@192.168.223.128's password: 
Last login: Wed Dec 27 00:59:33 2023 from 192.168.223.100
[wangwu@lucky ~]$ 

(2) scp远程复制

        通过 scp 命令可以利用SSH 安全连接与远程主机相互复制文件。使用scp 命令时.除了必须指定复制源、目标之外,还应指定目标主机地址、登录用户.执行后根据提示输入验证口令即可。例如.以下操作分别演示了下行.上行复制的操作过程,将远程主机中的/etc/passwd文件复制到本机.并将本机的/etc/vsftpd目录复制到远程主机。

[root@deft ~]# scp root@192.168.223.128:/etc/passwd /root/pwd.txt//将主机192.168.223.128的/etc/passwd/目录复制到本机/root/改名为pwd.txt
root@192.168.223.128's password: 
passwd                                                                                                                     100% 2404     3.3MB/s   00:00    
[root@deft ~]# ls
anaconda-ks.cfg  initial-setup-ks.cfg  pwd.txt  u789[root@lucky ~]# scp -r /etc/vsftpd/ root@192.168.223.100:/opt//将本机的/etc/vsftp/目录复制到主机192.168.223.100的/目录并改名opt

(3)sftp安全ftp

        通过sftp命令可以利用SSH 安全连接与远程主机上传下载文件.采用了与FTP类似的登录过程和交互式环境.便于目录资源管理。

[root@lucky ~]# sftp 135@172.16.37.13
135@172.16.37.13's password: 
Connected to 172.16.37.13.
sftp> ls
131           133           134           135           263           bdqn   

 2、构建密钥对验证的SSH体系

(1)在客户端创建密钥对

        在Linux客户端中,通过ssh-keygen工具为当前用户创建密钥对文件。可用的加密算法为ECDSA或DSA (ssh--keygen命令的“一t”选项用于指定算法类型)。例如.以wangwu用户登录客户端,并生成基于ECDSA 算法的SSH密钥对〈公钥、私钥〉文件.操作如下所示。

[wangwu@lucky ~]$ ssh-keygen -t ecdsa     
Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/wangwu/.ssh/id_ecdsa):   //设置私钥位置
Created directory '/home/wangwu/.ssh'.
Enter passphrase (empty for no passphrase):             //设置私钥密语
Enter same passphrase again:                            //确认所设置的短语

        上述操作过程中,提示指定私钥文件的存放位置时.一般直接按Enter键即可,最后生成的私钥.公钥文件默认存放在宿主目录中的隐藏文件夹.ssh 下。私钥短语用来对私钥文件进行保护

[wangwu@lucky ~]$ ls -lh ~/.ssh/id_ecdsa*         //确认生成的密钥文件
-rw------- 1 wangwu wangwu 227 12月 27 01:37 /home/wangwu/.ssh/id_ecdsa
-rw-r--r-- 1 wangwu wangwu 174 12月 27 01:37 /home/wangwu/.ssh/id_ecdsa.pub

        新生成的密钥对文件中. id_ecdsa是私钥文件.权限默认为600,对于私钥文件必须妥善保管.不能泄露给他人id_ecdsa , pub是公钥文件,用来提供给SSH服务器。

(2)将公钥上传给服务器

        将上一步生成的公钥文件上传至服务器,并部署到服务器端用户的公钥数据库中。上传公钥文件时可以选择SCP、FTP、Samba、HTTP 甚至发送E-mail等任何方式。例如,可以通过SCP方式将文件上传至服务器的/tmp录下。

[wangwu@lucky ~]$ scp /home/wangwu/.ssh/id_ecdsa.pub root@192.168.223.100:/tmp

3、在服务器中导入公钥文本

        在服务器中,目标用户(指用来远程登录的账号lisi)的公钥数据库位于一/. ssh目录,默认的文件名是“authorized_keys”。如果目录不存在,需要手动创建。当获得客户端发送过来的公钥文件以后,可以通过重定向将公钥文本内容追加到目标用户的公钥数据库。

[root@deft ~]# mkdir /home/lisi/.ssh/
[root@deft ~]# cat /tmp/id_ecdsa.pub >>/home/lisi/.ssh/authorized_keys
[root@deft ~]# ls -l /home/lisi/.ssh/authorized_keys 
-rw-r--r--. 1 root root 174 12月 27 01:49 /home/lisi/.ssh/authorized_keys

由于sshd 服务默认采用严格的权限检测模式〈StrictModes yes ),因此还需注意公钥库文件authorized_keys的权限——要求除了登录的目标用户或root 用户,同组或其他用户对该文件不能有写入权限,否则可能无法验证

(4)在客户端使用密钥对验证

        当私钥文件〈客户端)、公钥文件〈服务器)均部署到位以后,就可以在客户端中进行测试了。首先确认客户端中当前的用户为wangwu,然后通过ssh命令以服务器端用户lisi的身份进行远程登录。如果密钥对验证方式配置成功,则在客户端将会要求输入私钥短语.以便调用私钥文件进行匹配(若未设置私钥短语.则直接登入目标服务器)。

[wangwu@lucky ~]$ ssh lisi@192.168.223.100
Activate the web console with: systemctl enable --now cockpit.socketThis system is not registered to Red Hat Insights. See https://cloud.redhat.com/
To register this system, run: insights-client --registerLast failed login: Wed Dec 27 00:33:02 CST 2023 from 192.168.223.100 on ssh:notty
There were 3 failed login attempts since the last successful login.
[lisi@deft ~]$ whoami 
lisi





 

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

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

相关文章

C++的多继承和虚继承

目录 多继承的定义和用法定义多继承多继承中派生类对象的内存布局访问基类成员多继承带来的问题 虚继承虚继承的语法虚继承对象的内存布局虚继承中的构造虚继承的缺点 多继承的定义和用法 C支持多继承,即一个派生类可以有多个基类。 很多时候,单继承就…

效果图渲染电脑渲染好?还是云渲染更好?

效果图的渲染是建筑和室内设计领域中不可或缺的一步,随着技术的发展,云渲染作为一项新技术,正逐渐受到人们关注。今天,让我们深入探讨电脑渲染和云渲染这两种方法的优缺点以及它们的适用场景。 本地电脑渲染 本地电脑渲染是利用用…

往年面试精选题目(前50道)

常用的集合和区别,list和set区别 Map:key-value键值对,常见的有:HashMap、Hashtable、ConcurrentHashMap以及TreeMap等。Map不能包含重复的key,但是可以包含相同的value。 Set:不包含重复元素的集合&#…

库函数atoi的功能及模拟实现

atoi函数的功能 int atoi(const char * str) 参数是字符指针,函数值是转换后的int型数据。使用时要包含头文件stdlib.h。 atoi函数的功能是:跳过不可见(空白)字符(如空格、换页\f、换行\n、回车\r、制表符\t、垂直制表符\v),碰到正负号或…

在k8s中使用cert-manager部署gitlab集群

写在前面的话:前面有详细的分享过在k8s集群中部署gitlab,不过当时使用gitlab的访问证书是阿里云上免费的ssl证书,今天特意专门介绍下另外一种基于cert-manager发布自签证书的方式实现部署gitlab到k8s集群中。 往期gitlab部署系列如&#xff1…

麒麟信安桌面操作系统顺利上线长沙职业技术学院,深度促进产教融合,赋能信创人才培养

随着信息基础设施国产化进程的加快,信息技术创新产业对人才的需求量激增,为解决信创人才培养难题、深度促进产教融合,近日,麒麟信安、湖南欧拉生态创新中心携手长沙职业技术学院共同组建的“麒麟信安&欧拉(openEuler)国产操作…

【小黑嵌入式系统第十三课】PSoC 5LP第二个实验——中断控制实验

上一课: 【小黑嵌入式系统第十二课】μC/OS-III程序设计基础(二)——系统函数使用场合、时间管理、临界区管理、使用规则、互斥信号量 文章目录 1 实验目的2 实验要求3 实验设备4 实验原理4.1 中断(1) 中断机制概述(2) 中断源(3) 中断系统的功…

鸿蒙开发语言介绍--ArkTS

1.编程语言介绍 ArkTS是HarmonyOS主力应用开发语言。它在TypeScript (简称TS)的基础上,匹配ArkUI框架,扩展了声明式UI、状态管理等相应的能力,让开发者以更简洁、更自然的方式开发跨端应用。 2.TypeScript简介 自行补充TypeScript知识吧。h…

鸿蒙列表,item组件封装传参问题?@ObjectLink 和@Observerd

鸿蒙列表渲染,封装内容组件,进行item传参会报错? class FoodClass {order_id: number 0food_name: string ""food_price: number 0food_count: number 0 }Entry Component struct Demo07 {State message: string Hello World…

ElasticSearch 架构设计

介绍 ElasticSearchMySQLIndexTableDocumentRowFieldColumnMappingSchemaQuery DSLSQLaggregationsgroup by,avg,sumcardinality去重 distinctreindex数据迁移 参考博客 [1]

ZooKeeper Client API 安装及使用指北

下载 wget https://archive.apache.org/dist/zookeeper/zookeeper-3.5.4-beta/zookeeper-3.5.4-beta.tar.gz解压 tar -zxf zookeeper-3.5.4-beta.tar.gz安装 cd zookeeper-3.5.4-beta/src/c/ ./configure make sudo make install到 make 这一步大概率会出现报错:…

【数据结构初阶】二叉树(2)

二叉树顺序结构 1.二叉树的顺序结构及实现1.1二叉树的顺序结构 1.2 堆的概念及结构1.3 堆的实现1.3.1向上调整1.3.2向下调整1.3.3交换函数1.3.4打印1.3.5初始化1.3.6销毁1.3.7插入1.3.8删除1.3.9获得堆顶元素1.3.10判断是否为空1.3.6 堆的代码实现 1.3.2堆的创建1.3.3 建堆时间…

怎么修复MSVCR110.dll文件?全面解析MSVCR110.dll缺失修复方法

MSVCR110.dll文件缺失问题在Windows操作系统用户中相当普遍,经常导致应用程序启动失败或崩溃。MSVCR110.dll是Microsoft Visual C Redistributable for Visual Studio 2012的一部分,且应用程序通常依赖这个DLL文件来执行C库中的代码。文件的丢失可能源自…

【代码随想录】刷题笔记Day39

前言 下午答疑课过于无聊了,后台在跑代码也写不了作业,再刷点题吧~难得一天两篇 56. 合并区间 - 力扣(LeetCode) 和之前重叠区间是同个类型,和res里的元素比较,重叠就更新res里最后元素的最右边界 class…

VS2020使用MFC开发一个贪吃蛇游戏

背景: 贪吃蛇游戏 按照如下步骤实现:。初始化地图 。通过键盘控制蛇运动方向,注意重新设置运动方向操作。 。制造食物。 。让蛇移动,如果吃掉食物就重新生成一个食物,如果会死亡就break。用蛇的坐标将地图中的空格替换为 #和”将…

常用JavaScript库

一、认识前端工具库 1.前端工具类库 jQuery是一个快速、小型且功能丰富的 JavaScript 库,它使HTML文档遍历和操作、事件处理、动画和 AJAX 之类的事情变得 更加简单。当时jQuery库不但简化了代码,而且提供出色的跨浏览器支持,其极大的提高了…

黑马头条-day10-xxl-job热点文章计算

目录 一.需求分析 实现思路 定时计算 定时任务框架-xxljob 二. 学习目录 分布式任务调度 1 xxl-Job简介 2 XXL-Job-环境搭建 2.1调度中心环境要求 2.2源码仓库地址 2.3 初始化“调度数据库” 2.4配置部署“调度中心” 3.配置部署调度中心-docker安装 4.简单实例 创建…

每周一算法:邻值查找

给定一个长度为 n n n的序列 A A A&#xff0c; A A A中的数各不相同。 对于 A A A 中的每一个数 A i A_i Ai​&#xff0c;求&#xff1a; m i n 1 ≤ j < i ∣ A i − A j ∣ min_{1≤j<i}|A_i−A_j| min1≤j<i​∣Ai​−Aj​∣&#xff0c;以及令上式取到最小值的…

40G多模光模块QSFP-40G-SR4优势及应用领域介绍

QSFP-40G-SR4光模块是一种常用的光纤传输解决方案。传输速率40G&#xff0c;SR代表短距离多模光纤&#xff08;Short Range Multimode Fiber&#xff09;&#xff0c;4表示有四个光纤通道。这种光模块采用MPO/MTP多模光纤连接器来实现高速传输&#xff0c;传输距离可以达到300米…

WU反走样算法

WU反走样算法 由离散量表示连续量而引起的失真称为走样&#xff0c;用于减轻走样现象的技术成为反走样&#xff0c;游戏中称为抗锯齿。走样是连续图形离散为想想点后引起的失真&#xff0c;真实像素面积不为 零。走样是光栅扫描显示器的一种固有现象&#xff0c;只能减轻&…