rhcsa4 进程和SSH

news2025/3/3 18:24:56

tree命令。用于以树状结构显示目录和文件。通过运行 “tree” 命令可视化地查看文件系统中的目录结构。

tree  /   

 systemd是第一个系统进程(pid=1)不启动,其他进程也没法启动,

 用pstree查看进程树

我们可以看到所有进程都是systemd的子进程 ,所以别的进程能够运行的前提是systemd运行。

如何查看进程

下图是在虚拟机中以图形化界面查看空间使用情况

dev/loop0,1,2都是内存的使用情况,(sr0是光盘的使用情况),sda1,3是物理磁盘的使用情况 

用命令查看资源使用情况

ps aux 可查看这一秒系统运行的所有进程

该进程情况不是实时,只是把当下这一刻的进程罗列出来。比较适合检索某一个进程

a

ps -ef查看进程情况,除了可以看到进程pid,还可看到当前进程的父进程id是多少

 ppid是父进程id,systemd是没有父进程id的所以ppid=0

top命令,实时查看进程的动态变化(每三秒更新一次进程的使用情况。如果想要每秒刷新用 top -d  1  (秒数)

上面是资源的使用情况,下面是进程的活动情况。

上面的最后两行是,内存的使用情况和交换空间的使用情况(解决内存不足时产生的,其占用的硬盘的空间)  

 按数字1可扩展开来查看cpu的使用情况

ps命令,

 单独使用时,只能列出当前正在运行的进程,如上表示bash和ps命令正在运行

每个进程都有id号,可通过kill命令进行管理(向进程pid发送命令

kill -9 pid          强制关闭

kill -15 pid        正常关闭

kill -19 pid        停止进程

kill -18 pid        将停止的进程继续去运行

(补充:在远程登录时加上-X,远程连接一台由图形化界面的机器,当前机器也要支持图形化界面,(在foundation0机器打开,在workstation中查看)

当我们执行一个操作比较费时,又无法继续使用命令行继续操作,只能等待该进程执行时,我们可以把其该费时操作放到后台进行例如

打开firefox浏览器,在后面加个&,则是放到后台执行的意思,

【1】表示作业队列,6739表示进程数

可通过kill -15 6739 结束该进程,也可以是kill -15 %1(表示关闭第一个作业)

但是有一个关于DISPLAY环境变量的配置问题,我不懂(希望后面可以解决,先记一下)

(补充:强制关闭vim 编辑的文件,会产生碎片文件,等下次编辑要先删除该碎片文件

 右图打开了vim正在编辑abc.txt,在左边查找该界面的进程数, 当我们用kill -9 强制结束该进程(虽然已保存,但未退出该界面)后,

当我们再用vim 打开该文件,可以发现

这就是产生了碎片文件,按照下面绿色字体的提示,可以进行编辑,但是我们知道

如果输入d则可以删除当前内容,然后可以回归我们原本的编辑内容。

如果是e则继续编辑之前的内容,但是我们在再次打开该文件时又会发现,仍会出现该内容,这时我们可以知道时因为存在.abc.txt.swp文件 

所以我们可以删除该文件(rm -f .abc.txt.swp),再次打开则不会出现上上个画面的内容

如果我们在编辑一个文件,当我们直接关闭终端,再登录打开该文件可以发现也会出现上述的文本内容,这时我们页可删除相应的碎片文件。

关于kill -19和-18

在左边查询bash界面的进程数,在右边用kill -19 停止该进程。我们可以发现左边的命令行不可以继续执行命令。

若要恢复则用kill -18 恢复该进程

这样左边的命令行又可以继续执行操作

控制服务和守护进程

systemd守护进程管理Linix的启动,一般包括服务启动和服务管理。可在系统引导时以及运行中的系统上激活系统资源、服务器守护进程和其他进程。(总的来说systemd相当于食物链顶端)

守护进程是在执行各种任务的后台或运行的进程,一般情况下,守护进程在系统引导时自动启动并持续运行至关机或手动停止。许多守护进程的名字以字母d结尾

例如sshd是远程登录的守护进程,该进程由systemd进行管理

如果是用户需要手动对进程进行管理时不是使用进程的名字,这些进程由专门的管理命令systemctl(用户管理单元

可用systemctl -t help查看可用的单元类型

 

如果要查看每个单元的内容(systemctl  list-units

 (补充systemctl list-units命令显示systemd服务尝试解析并加载到内存中的单元,它不显示已安装但未启用的服务。如果要查看所有已安装的文件单元的状态,可用systemctl list-unit-files)

STATE字段的有效条目有enabled、disabled、static、masked 

查看具体某个类型 --type(如下查看workstation上安装的所有服务单元)

  如上所述sshd.service(sshd全名)

 

(--all 加上以后,如上表示列出workstation上所有活动和不活动的服务单元 

systemctl  不带参数,可列出已加载和活动的单元

查看进程状态

systemctl   status   name.type( 也可以是直接写服务的名字不用写后缀

systemctl  stop  服务  关闭服务

stop后:

输入密码后

 发现该服务状态为inactive

systemctl  start  服务   开启服务

systemctl   restart  服务  重新开启(重新读取配置文件)

 状态输出中可以找到表示服务状态的几个关键字

浏览服务状态(如下浏览sshd服务的状态)

 systemctl  is-enable 命令可以验证服务是启用还是禁用状态

控制系统服务

(用systemctl  resart 服务 来重新启动服务,其进程ID会改变,并且在启动期间会关联新的进程ID。而某些服务可以重新加载其配置文件,而无须重新启动。这个过程称为服务重新加载,其不会更改与各种服务进程关联的进程ID。

systemctl  reload 服务 (如果不确定服务是否具有重新加载配置文件更改的功能,可以使用命令 systemctl  reload-or-restart  服务  这样执行的话,则可以在可以重新加载的前提下重新加载配置文件启动,否则则重新启动服务启动)

如上效果等同,说明sshd服务可以重新加载配置文件启动 

 

如图理解即是,查看别的服务依赖该本服务,反向则是自己依赖别的服务

(dmesg可以查看开机时启动的服务等

 init 0  关机   1单用户模式   2多用户无网络   3多用户   4无意义  5切换图形化  6重启=reboot(init控制进程rhel5由来,更高版本兼用)

使用ssh访问远程命令行

当没有指定用户名登录时,一般默认时当前用户名登录,

 如果没有该用户则登录失败,所以一般都会指定用户名,除了ssh  服务器外,也可以时ssh  ip 登录

 exit退出登录

如果只是想登录别的用户执行少量操作,可以不用在该用户视图下操作(以要登录的用户身份运行要执行的命令,而不访问远程交互式shell

如图,直接在ssh命令后写上要执行的命令

w命令可显示当前登录到计算机的用户列表,可显示哪些用户使用ssh从哪些远程位置进行了登录及执行了何种操作

 当用户使用ssh命令连接到SSH服务器时,该命令会检查它在本地已知主机文件中是否有该服务器的公钥副本,如果有,ssh就将其与收到的公钥比较,如果不匹配会请求用户确认是否要继续连接(不匹配时,客户端会假定服务器的网络流量已遭劫持或服务器已被入侵)

 上图显示,我输入no则不继续连接,

 如下我输入yes,并输入要登录的用户密码则成功连接登录

SSH已知主机公钥管理

所连接的每个远程SSH服务器都将其公钥存储在/etc/ssh目录下扩展名为.pub的文件中。

 假设两台机器a,b。如果a想连接b,到那时在b上不小心把如上的公钥文件删除了,这时a是连接不上b,这时我们可以重新启动ssh服务,恢复文件

如下我们删除了公钥文件

退出b后再去登录,发现不可以

 

 如下我们在被删除公钥文件的服务器b的终端中输入重启sshd服务的命令,则可以发现配置删除文件已还原

 再次登录

因为公钥文件更新后内容与加密格式和以前不同,所以原来的旧钥匙也没有用了,当别的服务器尝试用旧钥匙去建立连接时,是不能成功连接登录的,

解决方法是让服务器把原来的旧钥匙删掉并更新新钥匙。我们知道当前用户的公钥存放在

~/.ssh/known_hosts

过滤得到该文件下存放serverb的旧的公钥

 所以我们可以删除其旧公钥,即使该文件记录了别的用户的公钥,我们也可以直接将该文件内容全部删除,因为当我们再远程连接时,又会接收新的公钥

 上面的情况是删除ssh_host开头的所有文件,没有全部删除

当删除/etc/ssh目录下的所有文件时,即使我们按如上操作重启sshd服务,而且重启后也只能恢复部分文件,发现还是登录不了b,(在这个过程中发现被删除的ssh_config文件还是很重要的,所以我时围绕恢复该文件来解决这个问题

如下删除了全部

 再登录报错

 解决方法:

尝试重新安装 openssh-server 包。运行以下命令来重新安装:

sudo dnf reinstall openssh-server

这将重新安装 openssh-server 包,并在安装过程中生成默认的 sshd_config 文件。

重启SSH服务:在恢复 sshd_config 文件后,运行以下命令来重启SSH服务:

sudo systemctl restart sshd

然后再登录就可以了

 看到那个浮夸的框框包围的内容,大概就是说我们的公钥更新需要接收新的公钥才可以成功连接。后面的步骤仍按上个的例子的操作接收新的公钥即可。

看了网上还有其他方法去恢复ssh_config文件的,例如查找文件副本、在配置相同的机器上复制ssh_config文件,再将其放到/etc/ssh目录。

(补充:ssh服务使用的是22号端口(加密端口)telnet使用23号端口(明文端口)

配置基于SSH密钥的身份验证

当我们对服务器进行基于密钥SSH的认证,则下次登录别的服务器不需要输入密码,可以直接登录。(通过基于密钥的身份验证在不使用密码的情况下进行身份验证,这种身份验证基于私钥-公钥方案)

实施步骤如下:

1、生成 公私钥对  ssh-keygen

 上图第一个:则是询问公钥存放路径,一般默认括号立的路径,直接回车继续就好。

生成后我们来查看一下存放位置(和known_hosts一样存放在家目录的.ssh目录下

id_rsa即是刚生成存放私钥的文件,id_rsa.pub是存放的公钥文件 

2、将公钥拷贝给服务器  ssh-copy-id  -i  公钥路径   要传递的服务器的root用户

传递成功后就不需要密码了,传递时需要输入密码

如果未在ssh-keygen提示时指定密语,则生成的私钥不受保护,这种情况下,任何拥有当前服务器私钥文件的人都可以使用其进行身份验证。如果设置密码则在使用私钥前需要输入密码才能使用会更安全。

如下ssh-keygen命令显示创建受密语保护的私钥及其公钥

如图我们登录从servera登录serverb需要输入密码,现在对其进行试验

如下第一条命令,生成一组具有密语保护的SSH密钥,并将密钥保存为~/.ssh/key-with-pass

 后面发现登录serverb仍需要密码,如下图,将公钥拷贝过去后在登录

但如果是如下图使用对应的私钥对远程系统进行身份验证,同时通过SSH登录远程系统则可以登录

如图不用输入什么既可以登录,那是因为我们没有设置指定的密语,如下若为私钥设置了该密语

如图一开始是没有密码登录不上的,后面来进行实验

看到图上这个部分

 

其实我已经指定了保护私钥的密语,只是像输入密码一样没有显示出来,在后面用密钥验证登录时(ssh -i  ~/.ssh部分)可以发现出现了输入密语的提示 

后来我们对公钥进行传递,注意公钥是.pub结尾,我随意取得名叫free-name-key,所以转发时注意是free-name-key.pub才是传递的公钥,否则是传递的私钥

 如下图可以发现,在第一行中我们根据提示输入了之前自己指定的密语

 这种登录方式是根据私钥验证来登录的(如果时ssh登录还需要输入密码)。后面的ssh-agent可以避免在使用SSH登录时以交互方式键入密语。

(这时临时插入的内容,所以不要因为图上服务器的名字和实验内容的不连贯而觉得奇怪)

 使用ssh-copy-id命令将公钥添加到远程服务器应该是无需密码的。但是,如果你在生成公钥时设置了密码短语,则仍然需要输入密码才能解锁私钥并进行身份验证。密码短语是用于保护私钥的密码,而非用于SSH身份验证。这意味着即使你将公钥添加到目标服务器上,如果你的私钥受到密码短语的保护,那么在进行SSH连接时仍然需要输入密码短语。

如果你不想每次SSH连接时都输入密码短语,可以考虑在运行ssh-agent时使用ssh-add命令将私钥添加到代理中,并在第一次输入密码短语后,代理会在会话期间管理私钥的解锁。这样,SSH连接将不再需要输入密码短语。

运行ssh-agent

(启动ssh-agent并运行这些命令以自动为该shell会话设置环境变量,此外,还显示ssh-agent进程的PID)

 使用名为ssh-agent的程序临时将密语缓存到内存中,之后,当使用SSH通过私钥登录另一个系统时,ssh-agent会自动提供密码。

使用ssh-add将SSH密钥对的密语保护的私钥(/root/.ssh/ksy-with-pass)添加到shell会话

如图设置完成后则可以直接通过ssh登录serverb 

关于ssh-add

意思是,若是默认的私钥文件名(或是路径)则在使用ssh-add时,要加上路径,且在用采用进行私钥的身份验证去登录时要加上-i选项,而且要在该路径前,如果是默认则不需要,直接ssh-add,私钥身份验证去登录时直接ssh  用户名@服务器即可

 3、验证

(补充:当生成多个公私钥对,若名字相同,则新的会覆盖旧的,若名字不同,则共存。如果名字不同,OpenSSH会使用指定的公私钥对文件。使用不同的文件名可以让你在使用不同的公私钥对时进行区分。

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

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

相关文章

蓝桥杯打卡Day3

文章目录 吃糖果递推数列 一、吃糖果IO链接 本题思路:本题题意就是斐波那契数列&#xff01; #include <bits/stdc.h>typedef uint64_t i64;i64 f(i64 n) {if(n1) return 1;if(n2) return 2;return f(n-1)f(n-2); }signed main() {std::ios::sync_with_stdio(false);s…

GRU门控循环单元

GRU 视频链接 https://www.bilibili.com/video/BV1Pk4y177Xg?p23&spm_id_frompageDriver&vd_source3b42b36e44d271f58e90f86679d77db7Zt—更新门 Rt—重置门 控制保存之前一层信息多&#xff0c;还是保留当前神经元得到的隐藏层的信息多。 Bi-GRU GRU比LSTM参数少 …

服务器数据恢复-阵列崩溃导致LVM结构破坏的数据恢复案例

服务器数据恢复环境&#xff1a; 一台服务器中有两组分别由4块SAS硬盘组建的raid5阵列&#xff0c;两组阵列上层划分LUN组建LVM结构&#xff0c;并被格式化为EXT3文件系统。 服务器故障&检测&#xff1a; RIAD5阵列中有一块硬盘故障离线&#xff0c;热备盘激活上线顶替离线…

西门子PLC的优势在哪呢?

今日话题&#xff0c;西门子PLC有何优势以至于能够在竞争中超越三菱和欧姆龙&#xff1f;西门子PLC作为德国品牌&#xff0c;具有独特的优势。视频后方有学习资料免费发放&#xff0c;有兴趣的移步自取。首先&#xff0c;尽管其指令相对抽象&#xff0c;学习难度较高&#xff0…

2.k8s账号密码登录设置

文章目录 前言一、启动脚本二、配置账号密码登录2.1.在hadoop1&#xff0c;也就是集群主节点2.2.在master的apiserver启动文件添加一行配置2.3 绑定admin2.4 修改recommended.yaml2.5 重启dashboard2.6 登录dashboard 总结 前言 前面已经搭建好了k8s集群&#xff0c;现在设置下…

【Mycat1.6】缓存不生效问题处理

背景 系统做读写分离&#xff0c;有大量读需求&#xff0c;基本没有实时获取数据业务需要&#xff0c;所以可以启用缓存来减缓数据库压力&#xff0c;传统使用mybatis的缓存需要大量侵入式声明&#xff0c;所以结合需求使用Mycat中间件来满足 数据库结构 mysql-master&#…

直播系统源码部署,高效文件管理与传输的FTP协议

引言&#xff1a; 在直播系统源码部署的过程中&#xff0c;开发协议是支持直播系统源码功能技术搭建成功并发挥作用的关键之一&#xff0c;在直播系统源码的众多协议中&#xff0c;有一个协议可以帮助直播系统源码部署完成后用户进行媒体文件的上传、下载、管理等操作&#xff…

CMake生成Visual Studio工程

CMake – 生成Visual Studio工程 C/C项目经常使用CMake构建工具。CMake 项目文件&#xff08;例如 CMakeLists.txt&#xff09;可以直接由 Visual Studio 使用。本文要说明的是如何将CMake项目转换到Visual Studio解决方案(.sln)或项目(.vcxproj) 开发环境 为了生成Visual S…

mysql数据库通过拷贝目录实现迁移

在windows环境中&#xff0c;如果mysql已有数据目录&#xff0c;进行数据迁移&#xff0c;可以通过直接拷贝数据文件的方式实现。下面是详细步骤 1 下载安装一个同版本的mysql数据库 到mysql官网下载MySQL安装文件&#xff0c;以下是mysql官网地址: https://downloads.mysql.c…

基于3D扫描和3D打印的产品逆向工程实战【数字仪表】

逆向工程是一种从物理零件创建数字设计的强大方法&#xff0c;并且可以与 3D 扫描和 3D 打印等技术一起成为原型设计工具包中的宝贵工具。 推荐&#xff1a;用 NSDT编辑器 快速搭建可编程3D场景 3D 扫描仪可以非常快速地测量复杂的物体&#xff0c;并且在涉及现实生活参考时可以…

自动化监控系统PrometheusGrafana

Prometheus 算是一个全能型选手&#xff0c;原生支持容器监控&#xff0c;当然监控传统应用也不是吃干饭的&#xff0c;所以就是容器和非容器他都支持&#xff0c;所有的监控系统都具备这个流程&#xff0c;数据采集→数据处理→数据存储→数据展示→告警 Prometheus 特点展开…

DAY-01--分布式微服务基础概念

一、项目简介 了解整体项目包含后端、前端、周边维护。整个项目的框架知识。 二、分布式基础概念 1、微服务 将应用程序 基于业务 拆分为 多个小服务&#xff0c;各小服务单独部署运行&#xff0c;采用http通信。 2、集群&分布式&节点 集群是个物理形态&#xff0c;…

02 CSS技巧

02 CSS技巧 clip-path 自定义形状&#xff0c;或者使用自带的属性画圆等circle HTML结构 <body><div class"container"></div> </body>CSS结构 使用*polygon*自定义形状 .container {width: 300px;height: 300px;background-color: re…

基于jeecg-boot的flowable流程历史记录显示修改

更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; https://gitee.com/nbacheng/nbcio-boot 前端代码&#xff1a;https://gitee.com/nbacheng/nbcio-vue.git 在线演示&#xff08;包括H5&#xff09; &#xff1a; http://122.227.135.243:9888 历…

在iPhone上构建自定义数据采集完整指南

在iPhone上构建自定义数据采集工具可以帮助我们更好地满足特定需求&#xff0c;提高数据采集的灵活性和准确性。本文将为您提供一份完整的指南和示例代码&#xff0c;教您如何在iPhone上构建自定义数据采集工具。 自定义数据采集工具的核心组件 a、数据模型 数据模型是数据采…

VectorDraw Developer Framework 10.1004 Crack

VectorDraw 开发人员框架 (VDF) 是一个图形引擎库&#xff0c;开发人员可以使用它来可视化其应用程序。通过提供的功能&#xff0c;我们的客户可以轻松创建、编辑、管理、导出、导入和打印 2D 和 3D 绘图 - 图形文件。VDF 使用的强大格式称为 VDML&#xff08;以及与 VDML 相同…

leetcode 20.有效括号 栈的简单应用

题目 数据结构 栈 code var isValid function(s) {// 空串和长度为奇数的字符串一定不符合要求if(!s || s.len%2){return true}let match {(: ),[: ],{: }}let stack []let len s.lengthfor(let i0; i<len; i){const ch s[i]if(ch[ || ch( || ch{){// 如果是左括号,…

macOS - 安装使用 SQLite

文章目录 关于 SQLite安装 使用 关于 SQLite 官网&#xff1a;https://sqlite.org/index.html 安装 https://formulae.brew.sh/formula/sqlite brew install sqlite包被安装在了&#xff1a;/usr/local/Cellar/sqlite/3.43.0_1 查看已安装版本信息 $ brew info sqlite >…

Demo记录|移动端H5页面如何实现上下滑动触发事件的小功能

Demo记录|移动端H5页面如何实现上下滑动触发事件的小功能 简单记录一个小demo&#xff0c;如果写h5页面比较实用&#xff0c;可以实现一些有趣的功能。 我这里主要是用来另类的实现抖音视频上下切换播放&#xff0c;因为视频涉及的选集&#xff0c;不能按照网上大部分的使用列表…

MT4移动端应用指南:随时随地进行交易

如今&#xff0c;随着科技的不断发展&#xff0c;我们可以随时随地通过手机进行各种操作&#xff0c;包括进行金融交易。本文将为大家介绍一款优秀的金融交易软件——MT4&#xff08;可在mtw.so/6gwPno这点下&#xff09;移动端应用&#xff0c;并提供详细的使用指南&#xff0…