我想使用Web API以类似SSH的方式在CLI中授权用户(在服务器上上传公钥,然后使用私钥进行授权)。有可能吗?
我不是要生成公钥/私钥,而是重用现有的id_rsa和id_rsa.pub。
你知道任何使它更容易的软件包(最好是Ruby on Rails宝石吗?)
@edit:
具体来说,我想登录网站,上传并使用在线帐户连接我的公钥,然后通过CLI界面使用网站的API(身份验证)。
答案 0 :(得分:1)
您可以使用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。您还可以从STDIN读取ssh-keygen并写入STDOUT,这样您就不需要使用文件来进行转换。