【发布时间】:2022-01-23 23:46:12
【问题描述】:
我运行这个命令为我的私有仓库生成有效的部署密钥:
ssh-keygen -b 2048 -t rsa -C "mystring"
该命令提示我输入路径和密码(我将其留空),并生成文件。
mykey:
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn
...
-----END OPENSSH PRIVATE KEY-----
还有一个mykey.pub:
ssh-rsa AAAAB3NzaC1yc...QDBQl mystring
但是如何在纯 Ruby 中运行此命令并以字符串形式获取结果?
我试过了:
keypair = OpenSSL::PKey::RSA.new 2048
keypair.to_pem
keypair.public_key.to_s
但生成的文件与我使用ssh-keygen 获得的文件不同。
谁知道怎么做?
附:我找到了sshkey gem,但还没有尝试过,因为我宁愿避免为此使用 gem。
【问题讨论】:
-
尤其是在生成长期密钥(例如 SSH 私钥)时,您应该完全依赖简单、经过验证且稳定的工具,例如
ssh-keygen命令行工具。使用加密密钥生成时,如果您对系统的所有部分(包括随机数生成器和加密原语等底层库(甚至那时))没有深入了解,则很难避免很多可能的问题。因此,您通常不应自行重新实现此功能,而应使用现有的经过审查且安全的工具。
标签: ruby ssh-keys openssh ssh-keygen deploy-keys