rhcsa4 进程和SSH

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.rhkb.cn/news/131854.html

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

相关文章

设计模式之模板模式

文章目录 豆浆制作问题模板方法模式基本介绍模板方法模式原理类图对原理类图的说明-即(模板方法模式的角色及职责)模板方法模式解决豆浆制作问题模板方法模式的钩子方法模板方法模式的注意事项和细节 豆浆制作问题 编写制作豆浆的程序,说明如下: 制作豆浆的流程 选…

RocketMQ 消息传递模型

文章目录 0. 前言1. RocketMQ的消息传递模型1.1. 同步发送1.2. 异步发送1.3. 单向发送 2. RocketMQ的批量发送和消费2.1 批量发送2.2 批量消费2.3 Spring Boot集成RocketMQ官方starter 示例 3. 总结4. 参考文档5. 源码地址 0. 前言 RocketMQ 支持6种消息传递方式,我…

pyarmor 加密许可证的使用

一 pyarmor 许可证的用处 文档:5. 许可模式和许可证 — Pyarmor 8.3.6 文档 试用版本有如下的限制: 加密功能对脚本大小有限制,不能加密超过限制的大脚本。 混淆字符串功能在试用版中无法使用。 RFT 加密模式,BCC 加密模式在试…

解决java.io.IOException: Network error

解决java.io.IOException: Network error 解决java.io.IOException: Network error摘要引言正文1. 理解异常的根本原因2. 处理网络连接问题3. 处理连接超时4. 处理协议错误或不匹配5. 异常处理 总结参考资料 博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客&#…

24.Xaml ListView控件-----显示数据

1.运行效果 2.运行源码 a.Xaml源码 <Window x:Class="testView.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.mic…

电子信息工程专业课复习知识点总结:(四)信号与系统、数字信号处理

这次我不具体把所有概念写出来了&#xff0c;只针对一些面试中经常提问的重点问题。 第一章 信号与系统基本概念 这里提出一个信号与系统这本书的大纲&#xff1a;这本书研究的就是信号与系统的关系。 一.信号是什么&#xff1f; ①信息是自然世界中一种表现形式&#xff0…

pkg 打包 nodejs

一、先全局安装pkg npm i -g pkg 二、下载打包所需的 node-v16.16.0-linux-x64 和 node-v16.16.0-win-x64 下载地址&#xff0c;里面选择你需要的版本 三、放到pkg的缓存目录 windows&#xff1a;C:\Users\whh\.pkg-cache\v3.4&#xff0c;&#xff08;把whh替换为你的电脑…

用冒泡排序完成库函数qsort的作用

Hello&#xff0c;今天分享的是我们用冒泡函数实现qsort&#xff0c;也就是快排&#xff0c;之前我们也讲过库函数qsort的使用方法&#xff0c;今天我们尝试用冒泡函数实现一下&#xff0c;当然我们也见过qsort&#xff0c;后面也会继续完善的。这几天我是破防大学生&#xff0…

MFC-GetAdaptersAddresses获取网卡信息

需要&#xff1a;#pragma comment(lib, "IPHLPAPI.lib") GetAdaptersAddresses函数参数说明 ULONG bufferSize 0;ULONG result ::GetAdaptersAddresses(AF_UNSPEC, GAA_FLAG_INCLUDE_PREFIX, nullptr, nullptr, &bufferSize);/*参数1&#xff1a;ULONG Famil…

【hive】列转行—collect_set()/collect_list()/concat_ws()函数的使用场景

文章目录 一、collect_set()/collect_list()二、实际运用把同一分组的不同行的数据聚合成一个行用下标可以随机取某一个聚合后的中的值用‘|’分隔开使用collect_set()/collect_list()使得全局有序 一、collect_set()/collect_list() 在 Hive 中想实现按某字段分组&#xff0c…

Python数据分析 — 数据分析概念、重要性、流程和常用工具

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。Python数据分析是利用Python编程语言进行数据处理、转换、清洗、可视化和建模的过程。Python在数据科学领域非常流行&#xff0c;有许多强大的库和工具可供使用&#xff0c;例如NumPy、Pandas、Matplotlib和Scikit-learn等…

导数公式及求导法则

目录 基本初等函数的导数公式 求导法则 有理运算法则 复合函数求导法 隐函数求导法 反函数求导法 参数方程求导法 对数求导法 基本初等函数的导数公式 基本初等函数的导数公式包括&#xff1a; C0(x^n)nx^(n-1)(a^x)a^x*lna(e^x)e^x(loga(x))1/(xlna)(lnx)1/x(sinx)cos…

服务器访问本机图片nginx配置

下面是Nginx的配置 然后是yml文件配置 后端返回给前端的数据直接返回这个地址就可以了 {"success": true,"code": "200","msg": "操作成功","data": [{"趋势": "https://120.26.98.185:8090/s…

YOLO物体检测系列3:YOLOV3改进解读

&#x1f388;&#x1f388;&#x1f388;YOLO 系列教程 总目录 YOLOV1整体解读 YOLOV2整体解读 YOLOV3提出论文&#xff1a;《Yolov3: An incremental improvement》 1、YOLOV3改进 这张图讲道理真的过分了&#xff01;&#xff01;&#xff01;我不是针对谁&#xff0c;在…

一点感受

做了两天企业数字化转型的评委&#xff0c;涉及全国最顶级的公司、最顶级的实际落地项目案例&#xff0c;由企业真实的落地团队亲自当面讲解。主要是为了了解了解真实的一线、真实的客户、真实的应用现状和应用水平。 &#xff08;1&#xff09;现状 我评审的涉及底层技术平台&…

JMeter-BeanShell预处理程序和BeanShell后置处理程序的应用

一、什么是BeanShell&#xff1f; BeanShell是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器&#xff0c;JMeter性能测试工具也充分接纳了BeanShell解释器&#xff0c;封装成了可配置的BeanShell前置和后置处理器&#xff0c;分别是 BeanShell Pre…

想要精通算法和SQL的成长之路 - 受限条件下可到达节点的数目

想要精通算法和SQL的成长之路 - 受限条件下可到达节点的数目 前言一. 相交链表&#xff08;邻接图和DFS&#xff09; 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 相交链表&#xff08;邻接图和DFS&#xff09; 原题链接 public int reachableNodes(int n, int[][] ed…

Linux下Minio分布式存储安装配置(图文详细)

文章目录 Linux下Minio分布式存储安装配置(图文详细)1 资源准备1.1 创建存储目录1.2 获取Minio Server资源1.3 获取Minio Client资源 2 Minio Server安装配置2.1 切换目录2.2 后台启动2.3 查看进程2.4 控制台测试 3 Minio Client安装配置3.1 切换目录3.2 移动mc脚本3.2 运行mc命…

LeetCode 39. Combination Sum【回溯,剪枝】中等

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

cudnn-windows-x86_64-8.6.0.163_cuda11-archive 下载

网址不太好访问的话,请从下面我提供的分享下载 Download cuDNN v8.6.0 (October 3rd, 2022), for CUDA 11.x 此资源适配 cuda11.x 将bin和include文件夹里的文件&#xff0c;分别复制到C盘安装CUDA目录的对应文件夹里 安装cuda时自动设置了 CUDA_PATH_V11_8 及path C:\Progra…