如何在Fedora Linux的openssh-server中禁用RSA和ECDSA密钥
如何在Fedora Linux的openssh-server中禁用RSA和ECDSA密钥
我完全懂你在小型Beowulf集群里想只用Ed25519的心思——毕竟它在速度和空间效率上确实甩RSA、ECDSA几条街,轻量集群里这点优势太重要了。之前你试过的方法没生效,大概率是没搞定Fedora里openssh自动生成密钥的机制,下面给你一套彻底解决的步骤:
第一步:先停掉当前运行的sshd服务,避免操作过程中服务偷偷重建密钥:
sudo systemctl stop sshd第二步:清理现有的RSA和ECDSA密钥文件,要把私钥和公钥一起删掉:
sudo rm /etc/ssh/ssh_host_rsa_key* /etc/ssh/ssh_host_ecdsa_key*第三步:修改sshd配置文件,锁定只使用Ed25519密钥:
打开配置文件(用你顺手的编辑器就行,比如nano):sudo nano /etc/ssh/sshd_config找到所有以
HostKey开头的行,做如下调整:- 给RSA和ECDSA的行前面加
#注释掉 - 确保Ed25519的行没有注释(去掉前面的
#,如果有的话)
调整后应该是这样:
#HostKey /etc/ssh/ssh_host_rsa_key #HostKey /etc/ssh/ssh_host_ecdsa_key HostKey /etc/ssh/ssh_host_ed25519_key接着在文件里新增一行,强制服务器只提供Ed25519的密钥算法,彻底解决ECDSA优先的问题:
HostKeyAlgorithms ssh-ed25519保存并退出编辑器(nano按
Ctrl+O回车,再Ctrl+X)。- 给RSA和ECDSA的行前面加
第四步:禁用并屏蔽自动生成密钥的systemd服务:
这才是你之前删了密钥又自动重建的核心原因——Fedora的openssh-server会通过sshd-keygen相关服务自动补全缺失的密钥。咱们把它彻底封死:sudo systemctl disable --now sshd-keygen.service sudo systemctl mask sshd-keygen@.servicemask命令会让这个服务无法被任何方式启动,从根源上杜绝自动生成的可能。第五步:重启sshd服务,让所有配置生效:
sudo systemctl restart sshd最后验证一下效果:
从客户端用verbose模式连接服务器,查看密钥算法信息:ssh -v your_username@your_server_ip在输出里找类似这样的行,确认只有
ssh-ed25519:debug1: kex_exchange_identification: host key algorithms: ssh-ed25519同时去
/etc/ssh目录下检查,应该不会再出现RSA或ECDSA的密钥文件了。
备注:内容来源于stack exchange,提问作者4Dummies
相关产品推荐
相关产品推荐

