近日在阿里云又搞了几个服务器,这次用的是Centos8的系统,具体的版本号8.2.2004 (Core),之前多少了解过一点,但是没用过。这次装环境也都是手动装的,熟悉一下这个系统,感觉和Centos7差的貌似不算大,dnf贼好用,自带python3.6,这个就比较舒服了,以后不用去装python3了,内核4.18.0-193,所需的东西都已经跑起来了,没啥子问题。

然后我准备做个免密,之后用ansible去维护了,针对Centos8一些模板文件估计也得改,还没有进行测试,就在我做免密的时候出现了点问题,我用ssh-copy-id命令进行的操作,也就是把本机的公钥复制过去,复制成功了,然而在我测试连接的时候发现了点问题,还是要求我输入密码,大概这样。

刚开始以为是我的操作出问题了,又换了另一种方式去传,结果也是一样,目标服务器的authorized_keys文件已经有我的公钥了,我这个ansible是一个centos7.6的系统,感觉有点不对劲,去那个服务器上看了一下登陆日志,发现了这么一条。

userauth_pubkey: key type ssh-dss not in PubkeyAcceptedKeyTypes [preauth]

大概就是ssh-dss类型的秘钥不在PubkeyAcceptedKeyTypes里,openssh 7.0以上默认关闭了ssh-dss,我顺便看一下centos8上面的版本,已经是openssh-8.0了,所以要手动开启一下,/etc/ssh/sshd_config配置文件中加入PubkeyAcceptedKeyTypes=+ssh-dss,然后重启sshd就可以了,然我我就照做了,结果发现和没改之前一样,还是上面的那个提示,没变过。

然后深扒了一下,发现了这个文档redhat官方的,系统范围的加密策略,之前看Centos8新特性的时候貌似见过,但是没去了解过,仔细看了一下,有四种策略DEFAULT/LEGACY/FUTURE/FIPSDSA算法只在LEGACY策略下被允许,所以想用DSA 就要把策略改为LEGACY,默认情况下策略是DEFAULT,所以执行这条命令就行了。

update-crypto-policies --set LEGACY

官方也有警告,切换到LEGACY策略级别会导致系统和应用程序的安全性降低,执行完这个就可正常免密登陆了。

估计也可以通过升级openssh来解决这个问题,目前centos7上的版本是7.4,目前不敢乱搞,怕影响我之前的东西,貌似这东西升级也挺麻烦的,短时间内也没打算大面积去使用Centos8,估计还有一堆坑没发现,暂时就这样吧。