生成 SSH 密钥(windows+liunx)

哎呀,我得和你谈谈这件事。

当时我还在隔壁帮老王和他的公司搭建服务器。
他的 Linux 服务器在德国,我远程管理它。
在 Windows 方面,我只在笔记本电脑上做过一次。

在 Linux 上获取 SSH 密钥很容易。
打开终端后,输入 ssh-keygen。
它会问你密码什么的,我说不行,直接回车,然后就有~/.ssh/id_rsa和~/.ssh/id_rsa.pub了。
就是这么简单。
我记得有一次,我手滑了,没有添加密码。
结果我当时还在用SSHv1 协议。
后来一直被别人扫码,真是烦人。

在 Windows 上,这需要一些努力。
你必须打开 PowerShell,而不是那个黑暗的命令行。
输入 ssh-keygen,它会询问您将其保存在哪里。
我说的是C盘根目录下,C:\id_rsa。
然后它又要求输入密码,我说忘记了,不要设置。
最后一个 .pub 文件也会生成。
你看,在Windows上做这件事比在Linux上麻烦一点。

但是,如果你拿到了钥匙,你一定要小心。
那东西就是你的钥匙。
万一丢了怎么办? 我之前有一个客户丢失了私钥,无法远程登录。
他很着急。
后来又重生,又传了新的。
那输了,啧啧。

配置代理,我对此不太熟悉。
我是一个能省钱就省钱的人。
旧规则是自己隐藏私钥并将公钥提供给服务器。
说到安全,一定不能马虎。
想想看,如果有人偷了钥匙怎么办? 整个系统都会受到影响。

一般来说,这并不难,但你必须小心。
在Linux上就简单很多,但是在Windows上就麻烦一点。
只要按照步骤操作就可以了。

【Linux常用命令系列】SSH-KEYGEN 手册

上周我使用 ssh-keygen 命令在服务器上生成了一个新的 SSH 密钥对。
地点在公司数据中心,操作耗时5 分钟。
我选择RSA类型是因为默认就是这个类型,所以我没有用-t选项指定。
生成的密钥对存放在~/.ssh目录下,文件名为id_rsa和id_rsa.pub。
我设置了密码保护,输入了复杂的1 2 个字符的密码,包括大小写字母、数字和特殊字符。
设置密码后,我使用-p选项更改了密码,以免将来忘记。
如果我忘记了密码,我必须生成一个新的密钥对,然后将公钥复制到另一台机器上。
我还将用户名和主机名添加到关键注释中以便于识别。
最后,我使用 -m 标志将密钥转换为 PEM 格式,这使得在必要时更容易导入到其他系统中。
我不确定这部分,但我记得完成后,我验证了密钥是否正确生成,并且我能够通过 SSH 连接到服务器。
这是你的。
如果您还需要生成 SSH 密钥,可以按照此步骤操作。

LINUX怎么生成ssh-keygen密钥对_Linux SSH-Keygen密钥生成方法

说实话,说到SSH无密码访问Linux,我还是在摸着石头过河。
但幸运的是,我后来经历了很多陷阱,也得到了一些感悟,现在分享给大家。

我们先来说一下密钥生成步骤。
你给出的 RSA 命令确实很老派。
基本上我为新安装的服务器选择 Ed2 5 5 1 9 想想看,Ed2 5 5 1 9 的速度是RSA的两倍多。
关键是安全保障还不够。
上次我为客户端配置服务器时,我使用了 RSA。
每个连接都被阻塞了很长一段时间,客户都快疯了。
然后我切换到 Ed2 5 5 1 9 ,它立即生效。
当然,如果你想连接一个特别旧的系统,你仍然需要设置RSA。

在密钥生成期间设置密码是一项技术工作。
我在一家金融公司工作,老板要求每把钥匙都有密码,说这样符合规定。
结果呢?每天早上打开电脑,我必须输入三个按键的密码才能执行任何操作,这让我很烦恼。
接下来我建议统一使用ssh-agent,加上密钥,这样就飞过去了,连声音都没有。
对于命令行操作, eval $(ssh-agent) ssh-add ~/.ssh/id_rsa 是一个救星。

在公钥配置阶段,有一个小细节尤为重要。
将公钥复制到authenticate_keys服务器时,不要用握手删除换行符。
上次帮同事修复就是因为删除了回车导致SSH连接失败。
我花了很长时间才找到答案。
还有权限设置,这很可能会让初学者感到困惑。
服务器上的~/.ssh目录必须是chmod 7 00,authorized_keys必须是6 00,客户端的私钥必须是6 00。
我记得有一次我犯了一个权限错误,导致SSH客户端被我屏蔽了。
我不得不重新启动几次才得到正确的结果。

在验证您的访问权限时,您需要知道一点好奇心。
如果您使用自定义密钥路径,例如 ssh -i ~/.ssh/my_key user@server,如果服务器主机指纹发生更改(例如,您删除 Known_Hosts),系统会要求您确认。
现在不要盲目地按它,只需说“是”并按 Enter 键即可。
我有一个朋友,他用卷轴写下了“不”。
连接了好久,终于发现服务器IP换了网卡。
他不能笑,也不能哭。

关于密钥管理,我有一个有趣的操作要分享。
在 ~/.ssh/config 中写入:
主机 github.com IdentityFile ~/.ssh/github_key 托管我的公司 IdentityFile ~/.ssh/company_rsa
这样,不同的环境使用不同的密钥,您不再需要更改文件。
我有一个项目,既需要推送到GitHub,又需要连接内网服务器。
这个方法很完美。

最后,让我给大家讲一个我走进陷阱的故事。
我曾经将私钥随意放在共享目录中,但同事在一次会议后删除了该文件,导致整个开发环境崩溃。
因此,私钥不应随意放置。
我目前将它们保存到加密的 USB 驱动器中,该驱动器位于安全区域,需要两步验证才能打开。

确实,归根结底,SSH 密钥管理是一项技术工作,但不是被这些命令吓倒了。
一旦你完成了每个步骤,以后使用它就会很容易。
经过十年的经验,我发现最重要的是打好基础,比如设置权限和管理密码。
如果您更加注意权限设置和密码管理等细节,您就会记住它们。