Linux基础之(六)之服sshd服务

一、概念

服务:服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql , sshd 防火墙等),因此我们又称为守护进程(dameon),是 Linux 中非常重要的知识点!

通俗点的理解:本身对自己没有意义为它人提供功能,例如httpd提供了远程连接的服务!

服务软件:提供各种功能的的软件!

C/S架构:服务总得有提供服务和享受服务的一方,我们称之为客户端(Client)和服务器端(Server)!

###########################################

二、对服务的管理

说明:7版本之的进程受init管理,七版本的进程受systemed管理,是系统的初始化进程(顶级进程)!

pstree      -->显示系统中的进程树!

进程管理命令systemctl

#######################################

(1)>只影响当前服务的状态

systemctl start   服务名 	开启服务
systemctl stop    服务名 	关闭服务
systemctl restart 服务名 	重启服务
systemctl reload  服务名 	使指定服务从新加载修改的配置文件(发送信号1)

########################################

(2)不影响当前状态,而是开机后的状态,只有重启后就有效!

systemctl enable  服务名 	开机启动服务
systemctl disable 服务名 	开机禁止启动

########################################

(3)查看系统中服务状态

systemctl status  服务名 	        查看服务状态
systemctl list-units 	                查看系统中所有加载(loaded)运行的服务,加上--all(not found)
systemctl list-unit-files 	        查看系统中所有服务的开机状态

关键字:masked、static、disabled、enabled

static(不可控制)-->固定,是其他服务的依赖性,换句话说为其它服务提供服务的(依赖的),其它服务的基础!
masked(冻结的服务)-->底层原理:将服务(/etc/systemed/system/)目录下的文件链接到/dev/null

systemctl list-dependencies 服务名 	查看系统中指定服务的依赖关系(排错:服务没有开启的原因)

注意:看diasbled和masked的区别!

########################################

(4)冻结和解冻服务

systemctl mask              服务名 	冻结服务(强制注销,并非删除)
systemctl unmask            服务名 	解冻服务

#########################################

(5)Linux的图形界面占用的系统资源比较大,所以一般采用文本界面的模式!

说明:下面两个不影响当前状态,重启后才会加载配置文件生效!

systemctl set-default multi-user.target 开机时不启动图形界面(多用户)

systemctl set-default graphical.target 	开机时启动"图形"界面

systemctl isolate multi-user.target     "立即"将图形界面隔离成多用户模式

补充:此实验可能不成功,是显卡(硬件配置)问题,出现LSB的问题,如果出现虚拟机用不了,就fullreset恢复

systemctl status  服务名 	查看服务状态

################几种常见结果的含义########################

状态 	                    解释
active(running)          意思是服务正在运行!
active(exited)           表示该服务执行一次就退出,不再执行其他程序,但是又不能关闭,否则影响其它!
场景--->例如network服务,如果关闭就连不上网
active(waiting)        处于等待的状态中,需要其他程序执行完成后可以去执行!
inactive(dead)         有此服务,但服务未启动!

把握一点:某些命令是通过修改配置文件,所以只有重启者重新加载配置文件才能生效!

测试:文本界面的登陆!

后续:自定义两个服务--->定时备份、删除回收站的内容!

自定义service服务

进阶1、进阶2

###########################################

三、sshd服务

    1)概念

作用:加密认证,远程连接主机

Client:ssh      --->secure shell!

Server:sshd  --->secure shell dameon!

ssh user@ip:以远程主机user的身份来远程连接主机获取远程主机bash环境

测试

客户端远程连接,成功后查看"-bash",然后服务器段资源管理器查看是否有此进程,然后kill掉,客户端的连接是否断开!

ip:是用来标识网络上唯一的主机!

说明

软件:openssh-server-6.6.1p1-31.el7.x86_64

默认是安装的,并且sshd服务默认是开机自启!

    2)实验1

前提

说明:实验环境的搭建

(1)两台虚拟机-->一台作为client,一台作为server

(2)分别虚拟机设置为同一网段的不同ip,并且删除历史/etc/.ssh/目录,目的是观察内容的变化,也防止以前的记录影响当前的实验效果!

说明:虚拟机设置ip的方式为静态方式,设置方式省略!

(3)为了显而易见对server进行相应的配置-->(1)是改名字;(2)设置字体颜色

(4)测试:client和server相互是否能ping通

(5)测试:server是否开启了sshd服务

这个很重要:如果没有开启,从两个方面排错(服务的依赖是否开启、查看服务的status)

测试:从需求来分析,相应的原理来辅助讲解!

小技巧:设置主机的名字

hostnamectl set-hostname  名字

注意:必须exit才有效

说明:know_hosts是将远程主机公钥信息在放客户端主机此文件中,下次连接的时候查询到就不用再询问了

比对:远程主机的公钥和客户端的公钥匙匹配不匹配(服务器重新装机但是IP和主机名不变,而客户端还是记录远程主机公钥匙)!

注意:远程连接目前测试的支持统配符{*、?、{}}这三种,同时支持反引号

补充-X可以打开图形界面,但是要注意的是图像虽然是在客户端展示,但是实际还是服务器端开启进程

小感悟:history -c的应用!

scp的远程复制:上传和下载

注意:上传和下载有目录有目录时必须递归加上-r

    3)实验2

需求引入:我想让自己比较要好的朋友,远程连接不需要密码怎么办?

    详见:底层机制

    4)随心所欲

  问题的引入:对于实验3建立认证后无密的用户可以登陆,但是如果把密码泄密了,其它用户照样可以登陆,怎么解决呢?

    5)粒度控制

  需求:让认证的用户都无法连接

    6)需求:在远程主机执行一条命令后,立即返回!

ssh student@172.25.20.111 find / &> ~/temp.info

注意:必须是普通用户的身份,实验效果才明显!

实验现象:画面卡顿,并没有立即退出!

原因:命令尚未执行完毕,一直处于等待中!

问题引入:假如在等待的期间,突然发现有更重要的事情要做,需要在当前的bash中完成(假如系统限制了开始bash的个数)

解决思路:命令运行脱机,让在远程主机的后台自动运行,而自己退出当前登陆,干别的事情!

  1)重要信息的解决方案

ssh -f student@172.25.20.111 find / &> ~/temp.info

# f参数:让其脱机在服务器端后台运行

  2)不重要信息的解决方案

ssh -f -n student@172.25.20.111 find / 

# n参数的说明:相当于 &> /dev/null -->信息导向黑洞设备

# 等价于:ssh -f  student@172.25.20.111 find / &> /dev/null

注意:如果不加保存信息的文件,默认会在当前的终端显示,而不是在远程服务器!

   3)应用于脚本程序

-o StrictHostKeyChecking=no

#特点:不询问的情况下自动加入将远程主机的公钥信息追加到known_hosts中!

#场景:多用户的时候,进行批处理,不用动态的交互!

、shd的安全设定

(1)是否允许为root登陆

原因:因为权限比较大,所要才会专门设置此选项!

设置方式:PermitRootLogin yes|no

备注:从安全角度来讲应设成"no"!,操作在48行附近!

(2)白名单

特点:指定用户身份远程可以,不在名单的用户无法登陆!

设置方式:AllowUsers student

说明:多个白名单用户时以"空格"分开,man 5 sshd_config查看配置文件的说明!

注意1:PermitRootLogin和AllowUsers同时开启,白名单如果没有root的话root无法登陆,AllowUsers优先级高!

现象:如果有以root为登陆(禁止之前登陆的),那么修改配置文件以后,killall -1 sshd(会立刻退出ssh远程登陆)!

(3)黑名单

特点:不允许登陆的用户!

设置方式:DenyUsers student

注意1:理论上黑白名单只能存在一个

注意2:针对某个参数时,保证其它参数还原!

补充:添加sshd登陆的提示信息

vim  /etc/mod  #root编辑此文件

说明:文件内容就是客户端登陆后的提示信息

一般的内容:声明提供的服务的类型,以及连接的IP信息等

后续:向当前主机的其它用户发送信息!场景:比如系统要维护和关机等等!

Linux下锁定账号,禁止登录系统的设置总结

细节问题

(1) .ssh/authorized_keys -->自己产生的公钥(锁),是ssh-key会生成的文件!

内容:生成的rsa签名的公钥会自动拷贝到authorized_keys,客户端"无密验证"要用这个来解一段字符串!

说明:如果找不到没有这个公钥,就会免密失败!

服务器端删除自己的锁(公钥),即使客户端有钥匙也不行!

########################

(2)ssh-key命令

作用:产生的公钥(记录id_rsa.pub和authorized_keys)和私钥(记录在id_rsa),并将公钥记录在authorized_keys 中

说明:不指定加密方式的话,默认是rsa的加密!

########################

(3) .ssh/konow_hosts    

记录:远程连接的主机的信息(密码登陆的方式)!

说明:第一次链接要进行认证,下次链接就不需要了!

 1)ssh会把你"访问过计算机"的公钥(public key)都记录在~/.ssh/known_hosts;
 2)下次连接的时候,都会对比known_hosts记录的远程主机的公钥信息和远程主机发送的当前的公钥信息;
 3)如果公钥不同,OpenSSH会发出警告,不允许登陆!

场景:远程主机重装系统,而客户端还是记录原来的known_hosts的信息!

#########################

(4)明确一个事实

一旦建立连接:客户端和服务器端都有对方的公钥和自己的私密,客户端的密钥是随即产生于本次连接中!

后续1:出现如下的问题

说明:常常是由于sshd服务器重装系统,但是ip和用户不变,导致验证不一致,根据提示删除文件相应的行,重新来建立连接!

后续2:ssh连接特别慢

、用户的登陆审计

 (1) w  

#w解释:Show who is logged on and what they are doing

#无参数:查看正在使用当前系统的用户(默认不显示远程主机名)!
     
        -f #查看时使用的来源(from)
        -i #显示IP(ip-addr)

读取的来源: /var/run/utmp -->内存中信息:谁当前在使用系统(user temp临时信息)

(2)last

#保存登陆过本系统的用户信息(成功)!

读取来源:/var/log/wtmp

w:write-->成功登陆的的写入!

(3)lastb

#查看尝试登陆的,但失败的信息

读取来源:/var/log/btmp

b:be defeated-->失败

后续:可以做一个自动化脚本,异常登陆自动kill!ssh百度百科、链接1链接2、配置文件、如何让进程在后台继续运行systemed

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值