一、系统服务的控制
(一)systemd
系统初始化程序,系统开始的第一个进程,pid为1
(二)systemctl 命令
systemctl list-unit-files ##列出服务的开机状态
systemctl status sshd ##查看指定服务的状态
systemctl stop sshd ##关闭指定服务
systemctl start sshd ##开启指定服务
systemctl restart sshd ##从新启动服务
systemctl enable sshd ##设定指定服务开机开启
systemctl disable sshd ##设定指定服务开机关闭
systemctl reload sshd ##使指定服务从新加载配置
systemctl list-dependencies sshd ##查看指定服务的倚赖关系
systemctl mask sshd ##冻结指定服务
systemctl unmask sshd ##启用服务
systemctl set-default multi-user.target ##开机不开启图形
systemctl set-default graphical.target ##开机启动图形
setterm ##文本界面设定color
(三)服务状态
systemctl status 服务名称enbaled ##服务开机启动
disabled ##服务开机不自启
static ##服务开机启动项不可被管理
failed ##系统配置错误
实例:
systemctl status sshd
systemctl stop sshd 关闭sshd服务之后在使用 systemctl status sshd
systemctl start sshd 开启sshd服务之后再使用systemctl status sshd
systemctl mask sshd 冻结服务后我们再次查看状态
systemctl unmask sshd 启用服务后再次查看状态
二、openssh-server
(一)客户端连接方式
功能:让远程主机可以通过网络访问sshd服务,开始一个安全shell
ssh 远程主机用户@远程主机ip
第一步:
我们使用ifconfig 查看当前主机的IP地址,为192.168.3.15
第二步:
我们使用ssh root@198.168.3.17 来远程连接我们的另一台虚拟机,它的ip为
198.168.3.17,之后再通过ifconfig查看当前主机ip,为198.168.3.17
ssh 远程主机用户@远程主机ip -X #调用远程主机图形工具
ssh 远程主机用户@远程主机ip command #直接在远程主机运行某条命令
(二)sshkey加密
1、公匙和秘钥的区别
公匙可被广泛传播,甚至保存在公共密匙数据库中以被其他Internet用户查阅。私匙属于个
人信息,绝不应该泄漏给其他人。
公匙和私匙相互作用对数据进行加密及解密。被公匙加密的数据只能被私匙解密,被私匙加
密的数据也只能被一个公匙解密。这样就可以实现双重认证 。
用户在发送关键信息给指定人前,首先使用该用户的公匙对信息进行加密。因为只有使用
该用户的私匙才能对发送信息进行解密,所以就保证了没有私匙的其他人不会解密信息。
另外,用户也可以使用他的私匙来加密信息,然后发送给许多人。因为只有使用发送者的公
匙才能对接收信息进行解密,这样接收者就能确信信息的确来自某个人。
2、生成公匙秘钥
[root@server0 ~]# ssh-keygen ##生成公钥私钥工具![](https://i-blog.csdnimg.cn/blog_migrate/7061129b51a5bec6ad45981d14bd6e66.png)
[root@server0 ~]# ssh-keygen ##生成公钥私钥工具
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):[enter] ##加密字符保存文件(建议用默认)
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): [enter] ##密钥密码,必须>4个字符
Enter same passphrase again: [enter] ##确认密码
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
ab:3c:73:2e:c8:0b:75:c8:39:3a:46:a2:22:34:84:81 root@server0.example.com
The key's randomart image is:
+--[ RSA 2048]----+
我们使用ls /root/.ssh/ 命令查看生成的公匙和秘钥
id_rsa #私钥,就是钥匙
id_rsa.pub #公钥,就是锁
3、添加key认证方式
ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.3.17 ssh-copy-id #添加key认证方式的工具
-i #指定加密key文件
/root/.ssh/id_rsa.pub #使用公匙加密,只有拥有该主机该用户私钥的人才可解锁。
root #加密用户为root
192.168.3.17 #被加密主机ip
4、分发钥匙给client主机
scp /root/.ssh/id_rsa root@192.168.3.15:/root/.ssh/
我们再在192.168.3.15的主机的/root/.ssh/目录下查看是否有id_rsa 这个秘钥。
我们再次使用192.168.3.15的主机的对192.168.3.17主机进行远程连接 ssh root@192.168.3.17
结果如上,因为我们的主机192.168.3.15已经拥有主机192.168.3.17的秘钥,我们可以使用秘钥对其进行远程访问,不需要密码。
5、提升openssh的安全级别
openssh-server配置文件是 /etc/ssh/sshd_configwo我们打开该配置文件,作如下修改 第一个可选配置项
修改完成配置向后,我们必须使用systemctl restart sshd 重启ssh服务,不然会系统不会对一些配置项
做修改此时我们再使用主机 192.168.3.17来访问这台主机我们看看效果(必须将上一个小章节的实验结果产
生的公匙和秘钥进行删除)。
如上因为我们192.168.3.15这台主机没有开启用户密码认证,所以我们使用192.168.3.17这个台主机无法连
接。
第二个可选配置项
PasswordAuthentication yes|no ##是否开启用户密码认证,yes为支持no为关闭
之后我们重启sshd这个服务,对文件进行重读。我们再使用主机 192.168.3.17来访问这台主机我们看看效
果
我们在输入密码之后被提示我们没有权限访问192.168.3.15这个主机的root用户。
第三个配置项
注意:
当设置用户白名单时,PasswordAuthentication yes|no 这个配置项将不再生效,以白名单为准。
例如,我们如下图进行配置:
我们先使用ssh student@192.168.3.15 进行远程连接
之后使用ssh root@172.168.3.15进行连接 发现失败
因此当我们存在白名单时,不在白名单之内的用户都不能被远程访问
同理我们也存在黑名单,即不在黑名单内的用户都可以被远程主机访问。
DenyUsers username1 username2 ##用户黑名单
6、ssh登陆提示修改该
vim /etc/motd ##显示登陆后字符 在这个文件中写入内容后将会显示在登陆者的窗口
例:我们在192.168.3.15 的主机中的 vim /etc/motd 这个文件中写入 hello word!!! ,在我们使用
192.168.3.17主机远程访问他的时候,窗口上显示出来