Linux专题—openssl生成公钥和私钥

坦率地说,使用 OpenSSL 生成公钥和私钥实际上非常简单,但加密和自动化任务要复杂一些。

首先,让我告诉你最重要的事情。
使用未加密的格式非常简单。
使用 openssl genpkey -algorithm RSA -out private_key.pem 生成 RSA 私钥。
私钥文件是纯文本的,保存即可。
然后,如果您使用 openssl rsa -pubin -in private_key.pem -out public_key.pem 直接从私钥中提取公钥,您也将看到纯文本形式的公钥。
两人基本上是一对敌人。
去年我们运行了该项目并生成了 3 ,000 个证书。
手动工作比编写脚本更快。

另一点是加密存储是关键。
openssl genpkey -algorithm RSA -aes2 5 6 -pass pass:YourPassword -out 使用 crypto_private_key.pem 生成采用 AES2 5 6 加密的私钥。
只需直接在命令中写入密码即可。
说实话,这很棘手。
密码很容易泄露,因此最好不要将密码硬编码到脚本中。
然而,公钥通常不加密,并且标准 OpenSSL 中没有直接命令。
如果您确实想“加密”您的公钥,则需要手动添加文件头或使用非标准方法。

一开始我以为加密公钥是一件很常见的事情,但后来我发现这是错误的。
现在几乎没有人这样做。
公钥是要公开的。

最后注意:在非交互式操作期间,回显“YourPassword”| openssl genpkey ... -pass stdin 使您不必手动输入密码,但命令太长,很容易出错。
对于引号和密码内容尤其如此。
最好使用变量来存储密码然后传递它。

Linux登录密钥生成

如何配置Linux用户的SSH密钥登录?authorized_keys设置方法

等等,我还记得昨晚在咖啡馆里,一个穿着格子衬衫的家伙在他的笔记本电脑上输入命令,并嘟囔着“你能修复 ssh 配置吗?”然而,折腾了一晚上,他在使用密码登录时却报错。
他挠了挠头,道:“许可不对。
”你看,这么小的一个案例,实在没必要​​只看步骤。

记得去年3 月在深圳,我帮邻队的小王配置了一个新服务器。
他只是用ssh-copy-id上传key,结果还是需要密码登录。
我让他用ssh -v debug,发现authorized_keys文件权限设置为6 4 0。
我直接在服务器上执行chmod 6 00 ~/.ssh/authorized_keys,立刻就登录了。
小王瞪大了眼睛:“啊?数字权限怎么可以这么用?”我说,Linux就是那种要深入挖掘每一个字节的东西。

我突然想到的另一件事是,在配置Bastion机器时,用户的主目录权限给得不够,导致密钥登录失败。
您必须将私钥备份到另一台机器上,否则您将不得不重新安装系统。
已经凌晨两点了,运维组有人发来表情包:“服务器又离家出走了。
”想想看,如果你丢失了 id_rsa,你实际上就会被锁定。

请参阅备份私钥的建议,这一点尤其重要是。
我有一个朋友上个月不小心删除了他的私钥,因为他正在使用IDEA进行开发并清空了整个.ssh文件夹。
最后我帮他找回了备份文件,他说以后再也不敢做rm -rf 了。
像这样的小事确实需要时刻提醒你。

设置完这些之后,就真的可以收紧了。
例如,将公钥保存在单独的文件中,例如 id_rsa_mywork、id_rsa_myhome,然后在 sshd_config 中指定仅识别特定的密钥文件。
不过,这取决于操作情况。
有时它非常复杂并且容易出错。
正如朋友最后所说,如果你能用默认的id_rsa登录,就不要盲目更改。