ssh原理和使用——认证阶段

作者: 郭子渝 分类: 红帽认证 发布时间: 2020-04-13 22:37 本文共1838个字,阅读需要5分钟。

上一篇文章我们讲述了ssh会话建立的过程,本篇博文讲述第二阶段认证阶段的过程和原理

SSHv2提供了四种认证方法

认证阶段

第一种:基于用户名和密码的认证

ssh原理和使用——认证阶段-郭子渝的博客

如上图所示,客户端使用在第一阶段会话建立过程中获取的服务器公钥对用户名,密码和会话ID进行非对称加密,把加密后的数据发送给服务端,服务端使用对应的私钥解密后去比对用户名合法性和密码有效性。具体的比对方法参考我后面的博文管理本地和远程Linux用户。

验证后,无论是否成功,服务器都会讲验证结果返回给客户端,并在本地/var/log/secure记录日志

第二种:基于公钥的认证

在上面介绍的登录流程中可以发现,每次登录都需要输入密码,很麻烦,也不利于自动化脚本的运行。SSH提供了另外一种可以免去输入密码过程的登录方式:公钥登录。流程如下:

ssh原理和使用——认证阶段-郭子渝的博客
  1. Client将自己的公钥存放在Server上,追加在文件authorized_keys中。
  2. Server端接收到Client的连接请求后,会在authorized_keys中匹配到Client的公钥pubKey,并生成随机数R,用Client的公钥对该随机数进行加密得到pubKey(R),然后将加密后信息发送给Client。
  3. Client端通过私钥进行解密得到随机数R,然后对随机数R和本次会话的SessionKey利用MD5生成摘要Digest1,发送给Server端。
  4. Server端会也会对R和SessionKey利用同样摘要算法生成Digest2。
  5. Server端会最后比较Digest1和Digest2是否相同,完成认证过程。

第三种:基于公钥和密码的认证

指定该用户的认证方式为 password 和 publickey认证同时满足。

客户端版本为 SSH1的用户只要通过其中一种认证即可登录;客户端版本为 SSH2的用户必须两种认证都通过才能登录。

第四种:any认证(默认方式)

指定该用户的认证方式可以是 password,也可以是 publickey。由客户端决定

实践阶段

了解了以下理论知识,我们不能成为Paper Linuxer,所以以下是实际命令

Centos8默认安装OpenSSH并打开防火墙,我们可以使用以下命令验证

[root@aliyun ~]# yum list installed | grep openssh
ssh原理和使用——认证阶段-郭子渝的博客

如果未显示如上图的结果,请运行如下命令安装openssh

[root@aliyun ~]# yum install openssh.x86_64 openssh-clients.x86_64 openssh-server.x86_64 -y

以上截图是安装的过程,为了防止翻车,我们也可以检查以下防火墙是否开放

[root@aliyun ~]# firewall-cmd --list-all

运行以上命令可能会出现如下三种提示:

第一种:防火墙未启动

ssh原理和使用——认证阶段-郭子渝的博客

防火墙未启动的情况下ssh可以连通,但是我们还是建议开启防火墙来保障我们的安全

我们可以运行如下命令开启防火墙

[root@aliyun ~]# systemctl start firewalld #开启防火墙
[root@aliyun ~]# systemctl enable firewalld #下次开机自动启动防火墙
ssh原理和使用——认证阶段-郭子渝的博客

第二种:显示防火墙开放情况

ssh原理和使用——认证阶段-郭子渝的博客

在services中有显示ssh证明ssh端口开放。

如果没有的话输入以下命令开启防火墙

[root@aliyun ~]# firewall-cmd --permanent --add-service=ssh
[root@aliyun ~]# firewall-cmd --reload
   --permanent 下次开机生效,否则仅本次有效
   --reload 重新加载防火墙使本次生效

防火墙的更多内容可以看我后面的博文了解更多,本文不做更多阐述。

服务已经安装,防火墙已经通过,我们最后再检查以下服务是否启动就可以使用ssh了

[root@notepad ~]# systemctl status sshd

这条命令可能会出现以下几种情况

ssh未启动

ssh原理和使用——认证阶段-郭子渝的博客

出现这种情况可以使用以下命令开启服务

[root@aliyun ~]# systemctl start sshd #开启ssh
[root@aliyun ~]# systemctl enable sshd #下次开机自动启动ssh

ssh正常启动

ssh原理和使用——认证阶段-郭子渝的博客

ssh服务安装并启动,防火墙开放端口,现在我们可以使用ssh客户端使用基于用户名和密码的方式连接服务器啦~

以上操作都是centos安装时自动完成,但是了解原理有助于排错,可能有点啰嗦,希望大家不要介意,有什么建议欢迎留言!

如果觉得我的文章对您有用,请订阅我的博客。您的支持将鼓励我继续创作!
Scroll Up