CentOS8 使用密钥远程登录的问题
近日在阿里云又搞了几个服务器,这次用的是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/FIPS
,DSA
算法只在LEGACY
策略下被允许,所以想用DSA
就要把策略改为LEGACY
,默认情况下策略是DEFAULT
,所以执行这条命令就行了。
update-crypto-policies --set LEGACY
官方也有警告,切换到LEGACY
策略级别会导致系统和应用程序的安全性降低,执行完这个就可正常免密登陆了。
估计也可以通过升级openssh
来解决这个问题,目前centos7
上的版本是7.4
,目前不敢乱搞,怕影响我之前的东西,貌似这东西升级也挺麻烦的,短时间内也没打算大面积去使用Centos8
,估计还有一堆坑没发现,暂时就这样吧。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。