You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何彻底移除SSH配置中的RSA密钥对?Debian/Mint切换至Ed25519

彻底从SSH切换到Ed25519并移除RSA密钥的正确步骤

没问题,我来一步步帮你完成从RSA到Ed25519的完全迁移——毕竟Ed25519在安全性、签名速度和密钥大小上的优势确实值得彻底切换。你已经完成了最关键的生成和复制Ed25519密钥的步骤,接下来的移除操作要注意先验证Ed25519的可用性,再清理RSA相关的所有痕迹:

1. 先确认Ed25519密钥已经正常生效

这是最关键的一步,千万别先删RSA!先测试不用指定密钥的SSH登录:

ssh your_username@remote_host

如果能成功登录,再用 verbose 模式确认使用的是Ed25519密钥:

ssh -v your_username@remote_host

在输出里找类似Offering public key: ... id_ed25519的行,确认Ed25519是优先被使用的。

另外,也可以查看当前ssh-agent加载的密钥:

ssh-add -l

确认Ed25519密钥在列表中。

2. 清理本地的RSA密钥和配置

直接用rm删除本地RSA密钥文件是可行的,但最好配合清理配置和ssh-agent的缓存:

  • 删除本地RSA密钥对:
    rm ~/.ssh/id_rsa ~/.ssh/id_rsa.pub
    
  • 如果ssh-agent之前加载过RSA密钥,移除它:
    ssh-add -d ~/.ssh/id_rsa
    
    或者直接清空所有加载的密钥,再重新添加Ed25519密钥:
    ssh-add -D
    ssh-add ~/.ssh/id_ed25519
    
  • 检查~/.ssh/config文件,如果有指定IdentityFile指向RSA密钥的行,删掉或者注释掉(比如# IdentityFile ~/.ssh/id_rsa),确保客户端默认优先使用Ed25519。

3. 清理远程服务器上的RSA公钥

登录到远程服务器,找到~/.ssh/authorized_keys文件,删掉里面开头为ssh-rsa的那一行(就是你之前用ssh-copy-id传过去的RSA公钥)。

为了安全,先备份原文件:

cp ~/.ssh/authorized_keys ~/.ssh/authorized_keys.bak

然后可以用过滤命令快速移除RSA公钥:

grep -v "ssh-rsa" ~/.ssh/authorized_keys > ~/.ssh/authorized_keys.tmp && mv ~/.ssh/authorized_keys.tmp ~/.ssh/authorized_keys

最后确保文件权限正确(这很重要,不然SSH会拒绝使用):

chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

4. 可选:强制SSH客户端只使用Ed25519(更彻底)

编辑本地~/.ssh/config文件,添加以下配置,让客户端只尝试Ed25519密钥,彻底杜绝RSA的使用:

Host *
    PreferredAuthentications publickey
    PubkeyAcceptedKeyTypes ssh-ed25519,ssh-ed25519-cert-v01@openssh.com

关于直接rmRSA密钥的可行性

直接删除本地RSA密钥文件是可行的,但前提是你已经确认Ed25519密钥能正常登录。如果跳过验证就删除,可能会导致无法SSH连接到服务器——所以一定要先验证Ed25519的可用性!

内容的提问来源于stack exchange,提问作者Vlastimil Burián

火山引擎 最新活动