远程访问及控制

一、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,一经查实,立即删除!

相关文章

2023软考电子证书如何下载,哪些省份有电子证书?

每年都有很多考生咨询“软考电子证书如何下载,哪些省份有电子证书?” 今天就这两个主要问题跟大家说明下。 软考电子证书如何下载 相信很多考生说的“软考电子证书”是指中国人事考试网查询的”证书电子文件“,其实这两者是有所区别的。 …

前端函数配置化编程 - Element-plus

Element-plus 前端函数配置化编程 介绍 yc-setting-elment-plus 是一款针对了 element-plus 框架进行实现的配置化项目开发插件。其主要是基于 yc-config-create-setting 进行实现的,并且也对 typescript 进行了处理,它能够有效的对 element-plus 所有…

半新手向,webservice开发调用wsdl,调用他人的服务

背景 调用别人的服务 首先得有一个wsdl文件 这个文件可以手动发你,也可以通过链接网页,复制网页上的所有内容保存为wsdl文件。 以上为前提。 假设你已经有了wsdl文件。 wsdl文件有两种方式转成java文件 第一种wsimport E:\temp\webservice>wsimpo…

CSRF和SSRF原理、区别、防御方法

CSRF(Cross-Site Request Forgery)原理:CSRF是一种由攻击者构造形成,由服务端发起请求的一个安全漏洞。它是一种利用用户在已登录的网站中提交非法请求的行为,攻击者通过伪造用户提交的请求,将恶意请求发送…

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),碰到正负号或…

cfa一级考生复习经验分享系列(十四)

首先说一下自己的背景,一个和金融没有半毛钱关系的数据分析师,之前考出了FRM。这次用一个半月突击12月的1级考试拿到了9A1B的成绩,纯属运气。以下纯属经(chě)验(dn),请看看就好&…

【webservice】cxf开发常见问题汇总

文章目录 1. 使用soapui测试时存在cdata嵌套的问题 1. 使用soapui测试时存在cdata嵌套的问题 说明&#xff1a;如果使用soapui进行webservice测试时要求数据放置在<![CDATA[ 和]]>中间&#xff0c;但是如果传递的XML文件中也存在cdata&#xff0c;并且不做处理的话&…

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

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

【ESP32运行MicroPython】连接无线网络、延迟和定时、实时时钟 (RTC)、WDT(看门狗定时器)

常用语法如下 import network wlan network.WLAN(network.STA_IF) #创建工作站接口 wlan.active(True) #激活接口 Wlan.scan() #扫描接入点 wlan.isconnected() #检查站点是否连接到AP wlan.connect(ssid&#xff0c; key) #连接AP wifi名称与密码 wlan.config(mac) #获取接口…

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

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

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

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

DshanMCU-R128s2硬件设计参考

R128 DevKit 开发板 硬件工程开源地址&#xff1a;https://oshwhub.com/gloomyghost/r128-module电路图&#xff1a;SCH_R128-DevKit_2023-09-05.pdfPCB&#xff1a;ProDocument_R128-DevKit_2023-09-05.eproGERBER&#xff1a;Gerber_R128-DevKit_2023-09-05.zipSTL&#xff…

鸿蒙开发语言介绍--ArkTS

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

python对图片进行旋转操作

Python提供了许多库来对图片进行操作,其中最常用的可能是PIL(Python Imaging Library,又名Pillow)。Pillow库允许你进行诸如读取、修改和保存图像等操作。 以下是一个简单的例子,展示了如何使用Pillow库来打开一张图片,对其进行一些简单的操作,然后保存结果: from PI…

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

鸿蒙列表渲染&#xff0c;封装内容组件&#xff0c;进行item传参会报错&#xff1f; 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&#xff0c;avg&#xff0c;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 这一步大概率会出现报错&#xff1a;…