我想以与 SSH 类似的方式使用 Web API 在 CLI 中授权用户(在服务器上上传公钥,然后使用私钥进行授权)。是否可以?
我不是要生成公钥/私钥par,而是重用现有的id_rsa和id_rsa.pub。
你知道任何使它更容易的软件包(最好是 Ruby on Rails gems?)
@编辑:
具体来说,我想登录网站,上传我的公钥并将其与在线帐户连接,然后能够通过 CLI 界面使用网站的 API(身份验证)。
我想以与 SSH 类似的方式使用 Web API 在 CLI 中授权用户(在服务器上上传公钥,然后使用私钥进行授权)。是否可以?
我不是要生成公钥/私钥par,而是重用现有的id_rsa和id_rsa.pub。
你知道任何使它更容易的软件包(最好是 Ruby on Rails gems?)
@编辑:
具体来说,我想登录网站,上传我的公钥并将其与在线帐户连接,然后能够通过 CLI 界面使用网站的 API(身份验证)。
您可以使用 openssl 库。至于您想要的更完整的解决方案,我认为它不可用。不过,用库来实现不应该做太多的工作。
http://ruby-doc.org/stdlib-1.9.2/libdoc/openssl/rdoc/OpenSSL/PKey/RSA.html
基本上做类似的事情:
# private_key_str can be in PEM or DER format
OpenSSL::PKey::RSA.new(private_key_str, 'passphrase').public_key
并将其与公钥进行比较。您可以使用 #to_pem 或 #to_der 获取密钥的字符串表示形式,具体取决于您使用的格式(稍微尝试一下)。您也可以使用 rsa 库。
我认为你可以使用
ssh-keygen -e -f id_rsa.pub > pemkey.pub
从 ssh-keygen 的默认格式转换为 PEM。如有必要,您可以在服务器上运行此命令进行转换 - 您必须尝试查看是否正确匹配格式,因为我不确定 OpenSSL::PKey::RSA 是否接受 ssh 的默认格式-keygen。您还可以使 ssh-keygen 从 STDIN 读取并写入 STDOUT,这样您就不需要使用文件来进行转换。