ed25519密钥可直接用ssh-keygen -t ed25519生成,openssh 6.5+原生支持;需确保服务端启用pubkeyauthentication、正确设置authorized_keys权限并重启sshd,再用ssh -v验证认证日志。

生成强密钥对(本地操作)
在你的终端运行:
-
推荐命令:
ssh-keygen -t ed25519 -C "you@domain.com"—— 生成标准 ED25519 密钥,快、短、抗量子潜力更强 - 按回车接受默认路径
~/.ssh/id_ed25519,私钥自动权限为 600(若非如此,手动执行chmod 600 ~/.ssh/id_ed25519) - 建议设密码短语(passphrase),既防私钥泄露,又可通过
ssh-agent缓存一次解锁多次使用
上传公钥到服务器(免手动踩坑)
优先用 ssh-copy-id,它自动处理路径、目录创建和权限:
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@host- 若提示
command not found(如 Alpine 或极简镜像),改用手动方式,且必须三步连做: mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys- 注意:
authorized_keys文件不能有 group/other 写权限,否则 SSH 直接拒绝读取
确认服务端配置正确(关键三项)
登录服务器,编辑 /etc/ssh/sshd_config,只检查这三项(其余保持默认即可):
-
PubkeyAuthentication yes—— 必须开启,这是 ED25519 生效的前提 -
AuthorizedKeysFile .ssh/authorized_keys—— 默认值,除非你改过路径,否则不用动;注意不能写成绝对路径 -
PasswordAuthentication no—— 可选,但务必等免密登录稳定后再启用,避免锁死自己
改完立即重启服务:sudo systemctl restart sshd(systemd)或 sudo service ssh restart(SysVinit)。
验证是否真走 ED25519 认证
连接时加 -v 参数看详细日志:
-
ssh -v user@host—— 找到类似debug1: Offering ED25519 public key和debug1: Authentication succeeded (publickey)的行 - 如果仍弹密码框,不是算法不支持,而是客户端没选对密钥或服务端权限/配置未生效
- 可强制指定密钥测试:
ssh -i ~/.ssh/id_ed25519 -o PreferredAuthentications=publickey user@host











