SSH连接的几种认证方式

SSH连接的几种认证方式

ssh日志显示客户端认证方法

在一次应急中,排查ssh日志发现Accept keyboard-interactive的ssh连接方式。但是keyboard-interactive没怎么遇到,故整理了ssh的几种登录方式。

在xshell中可以看到以下几种认证方式。

大家平时使用ssh最常用的就是Password和Public Key这两种方式,就不赘述了。

什么是keyboard-interactive认证?

先说结论:
keyboard-interactive和Password都是一样的,都是密码认证。keyboard-interactive authentication,它是键盘交互认证模式,也就是说你必须要自己输入密码。

但是实际测试的时候,ssh服务端配置了keyboard-interactive。以xshell为例,客户端选择了keyboard-interactive方法,并且保存了密码。客户端会替你完成键盘输入密码的过程。
所以键盘交互和密码连接基本无区别。只是服务端ssh日志记录上会有不同。

通过使用ssh -v 参数看到ssh连接过程中的详情。

在zgao.shop这台机器上我修改了配置文件仅允许使用keyboard-interactive键盘交互的方式连接。

同样我在zgao.top这台机器上使用默认配置,同时允许密码和公钥连接,两者的效果完全一致。

此时修改zgao.top的sshd配置文件,将PasswordAuthentication改为 yes(默认关闭)。就可以开启键盘交互认证。

现在支持所有的认证方式。

但是先出现的是keyboard-interactive,而不是Password认证。

结合上面这几张图(仔细观察图中的连接顺序)可以得到ssh几种认证方式的排序。

密码是所有ssh认证方法中最后尝试的一种方法。

GSSAPI又是什么呢?

 这种认证方式平时基本上没有接触过。GSSAPI 相关具体配置是什么呢?
主要是 GSSAPIAuthentication,这个默认值为 yes。

网上搜索 GSSAPI 的关键字,就会出现一大堆 SSH 登录慢的网页中有说到修改这个 GSSAPIAuthentication 为 no,可以加快 SSH 登录。

查了一些相关信息。

GSSAPI:是一套通用网络安全系统接口。该接口是对各种不同的客户端服务器安全机制的封装,以消除安全接口的不同,降低编程难度。
其最主要也是著名的实现是基于 Kerberos 的。一般说到 GSSAPI 都暗指 Kerberos 实现。

关于 GSSAPI 相关的认证,消耗的时间比较多,具体可以查看 SSH 连接日志。
GSSAPI 主要是基于 Kerberos 的,因此要解决这个问题也就变成要系统配置有 Kerberos, 一般用户是没有配置 Kerberos的。 所以就直接把 SSH 服务端的 GSSAPIAuthentication 直接关掉吧,客户端也可以关掉。

PKCS11认证是什么呢?

提到pkcs11,和它相关就是Yubikey。这种认证方式相当于把密钥放在了U盘里。

Yubikey是个 U 盘(其实具体是个 USB 键盘),至少有这么些用处:

  • 一次性密码(OTP)生成器,为网上账号登录时提供验证码(强烈推荐!比短信验证码安全一万万倍);
  • 个人密码存储器;
  • 个人数字身份的证明 (Oauth);
  • PGP 密钥存储器;
  • SSH key 存储器。

好处:即可随身携带,在多台电脑登录VPS,又免去了把私钥放在本地电脑而被取证的担忧。

上面xshell还提供了CAPI,这是什么?

这个搜索了一堆,资料太少。显示了是什么智能卡相关的。这个我也不太能确定,希望有了解的小伙伴可以补充一下。

Print Friendly, PDF & Email
赞赏

微信赞赏支付宝赞赏

Zgao

愿有一日,安全圈的师傅们都能用上Zgao写的工具。