Module: CemAcpt::Utils::SSH
- Defined in:
- lib/cem_acpt/utils/ssh.rb
Overview
Defined Under Namespace
Modules: Ephemeral
Classes: Keygen
Class Method Summary
collapse
Class Method Details
.clean_ephemeral_keys ⇒ Object
.create(key_name, **options) ⇒ Object
130
131
132
133
134
|
# File 'lib/cem_acpt/utils/ssh.rb', line 130
def self.create(key_name, **options)
keygen = Keygen.new
keys = keygen.create(key_name, **options)
keys + ['/dev/null']
end
|
.create_known_hosts(known_hosts, overwrite: true, keydir: default_keydir) ⇒ Object
136
137
138
139
140
141
142
|
# File 'lib/cem_acpt/utils/ssh.rb', line 136
def self.create_known_hosts(known_hosts, overwrite: true, keydir: default_keydir)
return nil unless known_hosts
kh_file = file_path(known_hosts, keydir: keydir)
::File.open(kh_file, 'w') { |f| f.write("\n") } unless ::File.exist?(kh_file) && !overwrite
kh_file
end
|
.default_keydir ⇒ Object
111
112
113
114
115
116
|
# File 'lib/cem_acpt/utils/ssh.rb', line 111
def self.default_keydir
ssh_dir = ::File.join(ENV['HOME'], '.ssh')
raise "SSH directory at #{ssh_dir} does not exist" unless ::File.directory?(ssh_dir)
ssh_dir
end
|
.ephemeral_ssh_key(keydir: default_keydir) ⇒ Object
148
149
150
|
# File 'lib/cem_acpt/utils/ssh.rb', line 148
def self.ephemeral_ssh_key(keydir: default_keydir)
CemAcpt::Utils::SSH::Ephemeral.create(keydir: keydir)
end
|
.file_path(file_name, keydir: default_keydir) ⇒ Object
118
119
120
|
# File 'lib/cem_acpt/utils/ssh.rb', line 118
def self.file_path(file_name, keydir: default_keydir)
::File.join(keydir, file_name)
end
|
.key_paths(file_name, keydir: default_keydir) ⇒ Object
Takes a file name (not path) and optional SSH key directory and returns the paths to the private key and public key based on the file name given.
126
127
128
|
# File 'lib/cem_acpt/utils/ssh.rb', line 126
def self.key_paths(file_name, keydir: default_keydir)
[file_path(file_name, keydir: keydir), file_path("#{file_name}.pub", keydir: keydir)]
end
|
.set_ssh_file_permissions(*files) ⇒ Object
144
145
146
|
# File 'lib/cem_acpt/utils/ssh.rb', line 144
def self.set_ssh_file_permissions(*files)
files.uniq.compact.map { |p| ::File.chmod(0o600, p) }
end
|
.ssh_keygen ⇒ Object
102
103
104
105
106
107
108
109
|
# File 'lib/cem_acpt/utils/ssh.rb', line 102
def self.ssh_keygen
bin_path = `#{ENV['SHELL']} -c 'command -v ssh-keygen'`.chomp
raise 'Cannot find ssh-keygen! Install it and verify PATH' unless bin_path
bin_path
rescue StandardError => e
raise "Cannot find ssh-keygen! Install it and verify PATH. Orignal error: #{e}"
end
|