Ruby で SSH 鍵を生成する方法

Rails で Web 上から SSH 鍵を生成したくなったけど、方法がなかなか見つからなかったから書いておく。備忘録。

コード

Gemfile に gem 'net-ssh' を追加して、↓みたいなモデルを作ればうまくできた。

class SslKey < ActiveRecord::Base
  belongs_to :user

  validates :user_id, presence: true
  validates :title, presence: true, uniqueness: { scope: :user }
  validates :private_key, presence: true
  validates :public_key, presence: true

  before_validation :generate_keys

  private

  def generate_keys
    key = OpenSSL::PKey::RSA.new 4096
    self.private_key = key.to_pem
    data = [key.to_blob].pack('m0')
    self.public_key = "#{key.ssh_type} #{data}"
  end
end

参考ページ

stackoverflow.com