Sha256: 0be7b49eddb624971b640eae6e287a446bb57b8f8f344bf577f723655c5cd03e
Contents?: true
Size: 1.19 KB
Versions: 2
Compression:
Stored size: 1.19 KB
Contents
require 'openssl' require 'fileutils' module Sshman class KeyManager SSH_DIR = File.expand_path("~/.ssh") def self.generate_key FileUtils.mkdir_p(SSH_DIR) print "Enter bit size (default 2048): " bit_size = gets.chomp.to_i bit_size = 2048 if bit_size <= 0 print "Enter key name (default id_rsa): " key_name = gets.chomp.strip key_name = "id_rsa" if key_name.empty? private_key_path = File.join(SSH_DIR, key_name) public_key_path = "#{private_key_path}.pub" print "Enter passphrase (leave blank for no passphrase): " passphrase = gets.chomp.strip key = OpenSSL::PKey::RSA.new(bit_size) cipher = OpenSSL::Cipher.new('AES-128-CBC') if passphrase != "" private_key = passphrase.empty? ? key.to_pem : key.export(cipher, passphrase) public_key = "ssh-rsa #{[key.public_key.to_der].pack('m0')}" File.write(private_key_path, private_key) File.write(public_key_path, public_key) File.chmod(0600, private_key_path) File.chmod(0644, public_key_path) puts "#{GREEN}SSH keys generated successfully! Private key: #{private_key_path}, Public key: #{public_key_path}#{RESET_COLOR}" end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
sshman-0.3.3 | lib/sshman/key_manager.rb |
sshman-0.3.2 | lib/sshman/key_manager.rb |