SSH 使用密钥做免密登陆 Ed25519

SSH 使用密钥做免密登陆 Ed25519,在SSH协议中,ssh-rsa签名算法是SHA1的哈希算法和RSA公钥算法的结合使用。由于目前SHA1的哈希算法容易受到攻击,OpenSSH从8.7以后版本开始默认不支持ssh-rsa签名方案。

最近家里服务服务器Ubuntu 更新了软件,发现之前通过ssh-copy-id配置的密码也需要输入密码了。查询了很多资料才发现ssh不支持rsa登陆了。openssh觉得ssh-rsa加密方式不安全, 默认不允许这种密钥用于登陆了。

在SSH协议中,ssh-rsa签名算法是SHA1的哈希算法和RSA公钥算法的结合使用。由于目前SHA1的哈希算法容易受到攻击,OpenSSH从8.7以后版本开始默认不支持ssh-rsa签名方案。openssh更新文档

如果您是 DevOps 工程师或 Web 开发人员,您很有可能已经熟悉并每天使用 SSH 密钥身份验证。无论是登录远程服务器还是将提交推送到远程存储库。与传统的基于密码的身份验证相比,它为我们提供了更好的安全性。

要检查计算机上所有在用的 SSH 密钥,请在终端上运行以下命令:

for key in ~/.ssh/id_*; do ssh-keygen -l -f "${key}"; done | uniq

您的 SSH 密钥可能使用以下算法之一

  • RSA 这取决于密钥大小。如果它有 3072 或 4096 位长度,那么你很好。不到那个,你可能想要升级它。1024 位长度甚至被认为是不安全的。
  • ECDSA 这取决于您的机器生成用于创建签名的随机数的能力。ECDSA 使用的 NIST 曲线也存在可信度问题。
  • Ed25519 这是当今最受推荐的公钥算法!
ssh-keygen -o -a 100 -t ed25519 -f ~/.ssh/creplus -C "creplus"

系统会要求您输入此密钥的密码,使用强密码或者直接回车

  • -o 使用新的 OpenSSH 格式而不是 PEM 格式保存私钥。实际上,当您将密钥类型指定为ed25519.
  • -a 是KDF(Key Derivation Function)轮数。数字越大,密码短语验证越慢,如果私钥被盗,则增加对暴力破解密码的抵抗力。
  • -t指定要创建的密钥类型,在我们的例子中是 Ed25519, 如果需要rsa走默认或者 指定rsa
  • -f: 指定生成的密钥文件的文件名。如果你想让 SSH 代理自动发现它,它必须存储在你的主目录中默认的 .ssh 目录中。
  • -C:指定注释的选项。

然后使用ssh-copy-id部署密钥到服务器端

ssh-copy-id -i .ssh/creplus.pub xxuser@xxx-server

如果你多个密钥 ,可以指定特定密钥指向特定服务

可以在文件中添加一个条目~/.ssh/config来配置这些选项

Host home-server
HostName home-server
IdentityFile /Users/xxx/.ssh/creplus
User creplus

Host github.com www.github.com
IdentityFile ~/.ssh/github

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注