迹忆客 专注技术分享

当前位置:主页 > 学无止境 >

生成安全 SSH 密钥

作者:迹忆客 最近更新:2022/07/07 浏览次数:

作为软件开发人员,我们可能需要经常使用 SSH 密钥。 进行系统管理或将提交推送到 GitHub 或 GitLab 等源代码控制被认为是通过 SSH 使用公钥身份验证而不是密码的最佳实践。

而且因为我们在此学习路径中同时进行(服务器管理和将代码移动到源代码控制存储库),我们应该首先设置自己的 SSH 密钥。 如果大家已经有一个现有的密钥,请不要立即跳过并先阅读下一部分。

DSA 和 RSA 1024 已过时!

大家是否已有 SSH 密钥? 好吧,酷!

时光荏苒,SSH 密钥已过时。 如果大家很久以前生成了 SSH 密钥,则各位的密钥可能很弱,并且与远程系统的开放式不安全连接。 大家可能很幸运远程系统拒绝 DSA 或 RSA 1024 密钥,但不能依赖它。

检查 SSH 密钥

使用以下命令验证 SSH 密钥的强度。 它希望我们的 SSH 密钥位于 ~/.ssh 文件夹中。 我们应该能够在 Mac 和 Linux 上执行以下命令而不会出现任何问题。 在 Windows 上,我们可以使用“Git Bash”来支持所需的关键字。

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

输出可能如下所示:

4096 SHA256:0wGMlgS9ZM/bH0A0E1VTIOqw9eFt3RF5wOxb5hCAqgQ marcus@email.com (RSA)  
4096 SHA256:qkyWBs354/tMXxryQnV9V2zVC6/7q6SsZW8Ycp/W15E Marcus@MXC-NB04 (RSA)  

注意:此命令搜索文件名以 id_ 开头的 SSH 密钥。 如果我们的键不以该前缀开头,请调整命令。 例如,使用上面的命令将找不到名为 github 的密钥。

像这样验证我们的输出:

  • DSA 或 RSA 1024 位:不安全! 绝对是一个危险信号。
  • RSA 2048:黄旗,我们应该更新密钥
  • RSA 3072/4096:没问题。 Ed25519有一些好处!
  • ECDSA:你最好改变。
  • Ed25519:安全着陆。 如果你正在使用这个:你很幸运。

在我的机器上,我设置了多个键。 运行命令来验证所有密钥会输出如下结果:

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

256 SHA256:M1N2O3P4 139823321@qq.local (ED25519)  
2048 SHA256:A/bcde jiyik_onmpw@163.com (RSA)  
4096 SHA256:abcde jiyik_onmpw@126.com (RSA)  

应用上面的指标,我需要关注 2048 位的 RSA 密钥。 中期,至少升级到 RSA 4096 或更好地升级到 Ed25519 要安全得多。

请注意第一个 256 位的密钥。 一开始你可能会想:嗯,把它放在验证选项列表的哪里,没有256位? 在这里,我们必须检查行尾的密钥类型:ED25519。 可以映射密钥类型,使用此密钥绝对安全 :)

如果我们使用的是 DSA 或 RSA 1024 密钥,请考虑升级! 此学习路径的目标是在生产环境中安全地自行托管自己的 Node.js 应用程序。 我们希望自己的应用程序是安全的,并且需要先从自己的机器开始。 下一节将向大家展示如何生成新的安全 SSH 密钥。


生成 SSH 密钥

在生成新密钥对期间,系统会要求我们输入密码。 此密码用于加密我们的私钥。 如果我们丢失了私钥,这应该可以保护其他人不会因为强密码而冒充我们。 确保选择的密码不容易暴力破解。

SSH 密钥生成器允许使用两种选项来抵御暴力破解密码:使用新的 RSA 密钥格式和由 bcrypt 提供支持的最新密钥派生功能。 Bcrypt 是一个密码散列函数,包含一个 salt(随机字符串)来保护我们的实际密码免受暴力攻击。

ssh-keygen -o -a 100 -t ed25519

生成ssh密钥

运行 ssh-keygen 时,为新的 RFC4716 密钥格式应用 -o 选项,并将 bcrypt 作为现代密钥生成函数。 -a <num> 选项指定轮数。 使用 -t <name> 定义密钥创建方式。

在生成新密钥对时,系统会要求我们提供密码。 这是我们的密码管理器第一次展示其实力的机会。 我们无需记住的自动生成的密码。

新生成的 SSH 密钥对位于显示的目录中。 在我的例子中,它是 /Users/jiyik/.ssh/id_ed25519 。 现有的 SSH 密钥在 ~/.ssh 中的新密钥旁边。

太好了,我们已经更新或创建了最新的 SSH 密钥对。 现在我们的系统已准备好使用 SSH 安全地打开和使用与其他系统的远程连接。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 Git 中使用 SSH 密钥克隆仓库或分支

发布时间:2023/04/04 浏览次数:74 分类:Git

你可以在本教程中使用 SSH 密钥进行 Git 克隆 - 在 Git 中设置 SSH,在 GitHub 中更新 SSH 公钥,并使用选项 - 仅克隆特定分支、选择的位置或仅克隆最近的提交。

Git push 使用 SSH 密钥

发布时间:2023/03/30 浏览次数:131 分类:Git

SSH 代表 Secure Shell。 它是为我们提供 SSH 网络协议访问证书的密钥。它提供对无保证开放网络上引擎之间的远程服务器的访问。 它用于传输数据、文件和网络管理,并提供从源头访问远程服务器

如何在 Linux 上设置反向 SSH 隧道

发布时间:2022/10/22 浏览次数:227 分类:操作系统

反向 SSH 是一种可用于从外部访问系统(位于防火墙后面)的技术。如大家所知,SSH 是一种支持网络节点之间加密通信的网络协议。 使用此协议,我们可以进行安全的远程登录、从/到远

从 openSSH 到 SSH2 的基于 SSH 密钥的身份验证设置

发布时间:2022/10/22 浏览次数:106 分类:操作系统

之前的文章(openSSH 到 openSSH 设置,SSH2 到 SSH2 设置)解释了如何在相同版本的 ssh 上设置基于密钥的身份验证,以在不输入密码的情况下执行 ssh 和 scp。 本文介绍如何在不同版本的 SS

基于 SSH2 密钥的身份验证设置

发布时间:2022/10/22 浏览次数:104 分类:操作系统

我之前解释了如何在不输入密码的情况下在 openSSH 上执行 SSH 和 SCP。 在本文中,我将解释如何使用以下 10 个步骤在 SSH2 上设置基于密钥的身份验证并在不输入密码的情况下执行 SSH/SCP。

如何通过 SSH 连接到 Docker 容器

发布时间:2022/02/28 浏览次数:512 分类:学无止境

SSH 是系统管理员工具箱中最常用的命令之一,但它在 Docker 中并不常用。 有时候我们也会需要使用SSH来连接Docker容器。本篇我们就介绍 Docker中的SSH。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便