class Dependencies::Sshkey

Constants

DEFAULT_KEY_ALGO
DEFAULT_KEY_FILE_COMMENT_COMMAND
DEFAULT_KEY_LIFETIME_S
DEFAULT_KEY_SIZE

Public Instance Methods

meet() click to toggle source
# File lib/dependencies/sshkey.rb, line 19
def meet
        Secrets.load

        Output.warn("\nNo passphrase set for SSH key '#{priv_key_name}'") if passphrase.nil? || passphrase.empty?

        FileUtils.mkdir_p(dir_name) unless File.directory?(dir_name)
        generate_key unless File.exist?(priv_key_name) && File.exist?(pub_key_name)
        add_key if success? && should_add_key?
end
met?() click to toggle source
# File lib/dependencies/sshkey.rb, line 14
def met?
        # we always need to at least update the key lifetime in the agent
        false
end
should_meet?() click to toggle source
# File lib/dependencies/sshkey.rb, line 33
def should_meet?
        true
end
unmeet() click to toggle source
# File lib/dependencies/sshkey.rb, line 29
def unmeet
        true
end

Private Instance Methods

add_key() click to toggle source
# File lib/dependencies/sshkey.rb, line 45
def add_key
        Net::SSH::Authentication::Agent.connect.add_identity(
                unencrypted_key,
                key_comment,
                lifetime: opt_key_lifetime
        )
end
dir_name() click to toggle source
# File lib/dependencies/sshkey.rb, line 69
def dir_name
        `echo #{File.dirname(name)}`.chomp
end
generate_key() click to toggle source
# File lib/dependencies/sshkey.rb, line 39
def generate_key
        execute(
                "ssh-keygen -b #{opt_key_size} -t #{opt_key_algo} -f #{priv_key_name} -q -N '#{passphrase}' -C '#{key_file_comment}'"
        )
end
key_comment() click to toggle source
# File lib/dependencies/sshkey.rb, line 61
def key_comment
        Ops.project_name
end
key_file_comment() click to toggle source
# File lib/dependencies/sshkey.rb, line 65
def key_file_comment
        `echo #{opt_key_file_comment_command}`.chomp
end
opt_add_keys?() click to toggle source
# File lib/dependencies/sshkey.rb, line 110
def opt_add_keys?
        Options.get("sshkey.add_keys").nil? ? true : Options.get("sshkey.add_keys")
end
opt_key_algo() click to toggle source
# File lib/dependencies/sshkey.rb, line 85
def opt_key_algo
        Options.get("sshkey.key_algo") || DEFAULT_KEY_ALGO
end
opt_key_file_comment_command() click to toggle source
# File lib/dependencies/sshkey.rb, line 118
def opt_key_file_comment_command
        Options.get("sshkey.key_file_comment") || DEFAULT_KEY_FILE_COMMENT_COMMAND
end
opt_key_lifetime() click to toggle source
# File lib/dependencies/sshkey.rb, line 114
def opt_key_lifetime
        Options.get("sshkey.key_lifetime") || DEFAULT_KEY_LIFETIME_S
end
opt_key_size() click to toggle source
# File lib/dependencies/sshkey.rb, line 81
def opt_key_size
        Options.get("sshkey.key_size") || DEFAULT_KEY_SIZE
end
opt_passphrase() click to toggle source
# File lib/dependencies/sshkey.rb, line 93
def opt_passphrase
        @opt_passphrase ||= begin
                return "$#{Options.get('sshkey.passphrase_var')}" if Options.get("sshkey.passphrase_var")

                output_passphrase_warning if Options.get("sshkey.passphrase")

                Options.get("sshkey.passphrase")
        end
end
output_passphrase_warning() click to toggle source
# File lib/dependencies/sshkey.rb, line 103
def output_passphrase_warning
        Output.warn(
                "\n'options.sshkey.passphrase' is deprecated and will be removed in a future release. " \
                "Use 'options.sshkey.passphrase_var' instead."
        )
end
passphrase() click to toggle source
# File lib/dependencies/sshkey.rb, line 89
def passphrase
        `echo #{opt_passphrase}`.chomp
end
priv_key_name() click to toggle source
# File lib/dependencies/sshkey.rb, line 73
def priv_key_name
        `echo #{name}`.chomp
end
pub_key_name() click to toggle source
# File lib/dependencies/sshkey.rb, line 77
def pub_key_name
        "#{priv_key_name}.pub"
end
should_add_key?() click to toggle source
# File lib/dependencies/sshkey.rb, line 53
def should_add_key?
        ENV["SSH_AUTH_SOCK"] && opt_add_keys?
end
unencrypted_key() click to toggle source
# File lib/dependencies/sshkey.rb, line 57
def unencrypted_key
        Net::SSH::KeyFactory.load_private_key(priv_key_name, passphrase.empty? ? nil : passphrase)
end