rhcsa4 进程和SSH

rhcsa4 进程和SSH_第1张图片

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

rhcsa4 进程和SSH_第2张图片

tree  /   

rhcsa4 进程和SSH_第3张图片 systemd是第一个系统进程(pid=1)不启动,其他进程也没法启动,

 用pstree查看进程树

rhcsa4 进程和SSH_第4张图片

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

如何查看进程

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

rhcsa4 进程和SSH_第5张图片

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

用命令查看资源使用情况

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

rhcsa4 进程和SSH_第6张图片

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

a

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

rhcsa4 进程和SSH_第7张图片

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

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

rhcsa4 进程和SSH_第8张图片

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

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

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

rhcsa4 进程和SSH_第9张图片

ps命令,

rhcsa4 进程和SSH_第10张图片

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

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

kill -9 pid          强制关闭

kill -15 pid        正常关闭

kill -19 pid        停止进程

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

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

rhcsa4 进程和SSH_第11张图片

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

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

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

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

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

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

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

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

rhcsa4 进程和SSH_第12张图片

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

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

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

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

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

关于kill -19和-18

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

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

rhcsa4 进程和SSH_第13张图片

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

控制服务和守护进程

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

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

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

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

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

rhcsa4 进程和SSH_第14张图片 rhcsa4 进程和SSH_第15张图片

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

rhcsa4 进程和SSH_第16张图片

rhcsa4 进程和SSH_第17张图片

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

rhcsa4 进程和SSH_第18张图片

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

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

rhcsa4 进程和SSH_第19张图片

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

 rhcsa4 进程和SSH_第20张图片

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

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

查看进程状态

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

rhcsa4 进程和SSH_第21张图片

rhcsa4 进程和SSH_第22张图片

systemctl  stop  服务  关闭服务

stop后:

rhcsa4 进程和SSH_第23张图片

输入密码后

rhcsa4 进程和SSH_第24张图片

 发现该服务状态为inactive

systemctl  start  服务   开启服务

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

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

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

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

rhcsa4 进程和SSH_第25张图片

控制系统服务

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

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

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

rhcsa4 进程和SSH_第26张图片

 rhcsa4 进程和SSH_第27张图片

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

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

rhcsa4 进程和SSH_第28张图片

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

使用ssh访问远程命令行

rhcsa4 进程和SSH_第29张图片

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

rhcsa4 进程和SSH_第30张图片

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

rhcsa4 进程和SSH_第31张图片

 exit退出登录

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

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

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

rhcsa4 进程和SSH_第32张图片

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

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

 如下我输入yes,并输入要登录的用户密码则成功连接登录rhcsa4 进程和SSH_第34张图片

SSH已知主机公钥管理

rhcsa4 进程和SSH_第35张图片

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

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

如下我们删除了公钥文件

rhcsa4 进程和SSH_第36张图片

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

 rhcsa4 进程和SSH_第37张图片

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

rhcsa4 进程和SSH_第38张图片

 再次登录

rhcsa4 进程和SSH_第39张图片

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

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

~/.ssh/known_hosts

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

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

rhcsa4 进程和SSH_第40张图片

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

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

如下删除了全部

rhcsa4 进程和SSH_第41张图片

 再登录报错

 解决方法:

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

sudo dnf reinstall openssh-server

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

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

sudo systemctl restart sshd

然后再登录就可以了

rhcsa4 进程和SSH_第42张图片

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

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

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

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

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

实施步骤如下:

1、生成 公私钥对  ssh-keygen

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

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

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

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

rhcsa4 进程和SSH_第44张图片

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

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

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

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

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

rhcsa4 进程和SSH_第45张图片 后面发现登录serverb仍需要密码,如下图,将公钥拷贝过去后在登录rhcsa4 进程和SSH_第46张图片

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

rhcsa4 进程和SSH_第47张图片

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

rhcsa4 进程和SSH_第48张图片

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

看到图上这个部分

 

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

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

rhcsa4 进程和SSH_第49张图片

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

 这种登录方式是根据私钥验证来登录的(如果时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会话

rhcsa4 进程和SSH_第50张图片

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

关于ssh-add

rhcsa4 进程和SSH_第51张图片

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

 3、验证

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

你可能感兴趣的:(ssh)