我正在研究需要生成SSH密鑰對的Ruby/Rack應用程序。儘管我想從應用程序調用ssh-keygen
,但我不能這麼做,因爲它設計爲在Heroku上運行,並且不支持調用該命令。在沒有ssh-keygen的情況下生成SSH密鑰對(private/public)
我已經能夠得到使用OpenSSL私有/公共RSA密鑰在Ruby標準庫執行以下操作:
key = OpenSSL::PKey::RSA.generate(2048)
# => -----BEGIN RSA PRIVATE KEY----- ....
key.public_key
# => -----BEGIN RSA PUBLIC KEY----- ....
不幸的是RSA公鑰和SSH公共密鑰是不一樣的東西,即使它們可以從相同的RSA密鑰生成。一個SSH公鑰看起來像下面這樣:
ssh-rsa AAAAB3NzaC1yc2EAAAABIwA.....
是否有可能生成SSH密鑰或RSA密鑰轉換爲SSH在Ruby中不使用ssh-keygen
?
OpenSSL :: PKey :: RSA#to_pem似乎只是提供字符串輸出,它不會將其轉換爲SSH公鑰格式。 – bensie 2011-03-11 15:31:31
我也試着簡單地在前面添加「ssh-rsa」,並在字符串中添加註釋語法,但它不相同,並且不被識別爲有效的公鑰。 – bensie 2011-03-11 15:36:03