From 3b347e89c6d99b1ed108f50973cf8355898c2db3 Mon Sep 17 00:00:00 2001 From: TaurusXin Date: Mon, 30 May 2022 20:22:22 +0100 Subject: [PATCH] feat: 059-ssh-key --- content/post/059.ssh-key/ssh-key.md | 52 +++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 content/post/059.ssh-key/ssh-key.md diff --git a/content/post/059.ssh-key/ssh-key.md b/content/post/059.ssh-key/ssh-key.md new file mode 100644 index 0000000..4942266 --- /dev/null +++ b/content/post/059.ssh-key/ssh-key.md @@ -0,0 +1,52 @@ +--- +title: "2022 年程序员一定要做的一件事情 - 更换你的 SSH 公钥算法" +categories: [ "Linux" ] +tags: [ "ssh", "linux" ] +draft: false +slug: "ssh-key-Ed25519" +date: "2022-05-30 19:50" +--- + +## 前言 + +常见的 SSH 登录密钥使用 RSA + SHA-1 算法。RSA 经典且可靠,但性能不够理想。 + +只要你的服务器上 OpenSSH 版本大于 6.5(2014 年的古早版本),就可以利用 Ed25519 算法生成的密钥对,减少你的登录时间。如果你使用 SSH 访问 Git,那么就更值得一试。 + +Ed25519 的安全性在 RSA 2048 与 RSA 4096 之间,且性能数十倍于 RSA 算法。 + +## 起因 + +自 2022 年 4 月 21 日 Canonical 发布了 Ubuntu 22.04 版本,并且将 Ed25519 加入了 SSH 登录密钥算法,禁用了 RSA 公钥算法,导致我在 iOS 上 ServerCat 应用程式的 RSA 密钥无法连接到服务器,经过排查之后发现 Ubuntu 22.04 将 OpenSSH 版本升级到 8.9,且 OpenSSH 团队宣布`ssh-rsa`在 8.8 版本中将默认禁用签名方案。 + +![SSH 服务端守护进程版本](https://cdn.rhyland.cn/hugo/2022/05-30/image-20220530200309584.png) + +这是导致我无法使用 RSA 秘钥连接到我所有已经升级到 Ubuntu 22.04 版本的虚拟机 + +## 解决方案 + +解决方案有两种,启用过时的方案,或者是使用 Ed25519 公钥算法,**后者**是最为推荐的,数十倍的性能及不低于 RSA 2048 的安全性。 + +### 启用抛弃的 RSA 算法 + +使用编辑器打开远程主机上的 sshd 的配置文件,配置公钥接收 RSA 算法 + +```shell +echo 'PubkeyAcceptedKeyTypes +ssh-rsa' >> /etc/ssh/sshd_config +systemctl restart sshd.service +``` + +### 换用 Ed25519 公钥算法 + +更换算法意味着所有的机器都将要更换公钥,需要替换所有机器的 authorized_keys 文件中的可信公钥。 + +```shell +ssh-keygen -t ed25519 -C "your_email@example.com" +cat ~/.ssh/id_ed25519.pub +``` + +将新的公钥添加到你目标远程主机上的 ~/.ssh/authorized_keys 文件末尾 + +## 结语 + +强烈建议替换公私钥体系的算法,提高安全性的同时也换来了高性能。