lib/ohai/plugins/ssh_host_key.rb in ohai-6.16.0 vs lib/ohai/plugins/ssh_host_key.rb in ohai-6.18.0.rc.0
- old
+ new
@@ -19,18 +19,20 @@
provides "keys/ssh"
require_plugin "keys"
keys[:ssh] = Mash.new
-def is_dsa_or_rsa?(file)
- case IO.read(file).split[0]
+def extract_keytype?(content)
+ case content[0]
when "ssh-dss"
- "dsa"
+ [ "dsa", nil ]
when "ssh-rsa"
- "rsa"
+ [ "rsa", nil ]
+ when /^ecdsa/
+ [ "ecdsa", content[0] ]
else
- nil
+ [ nil, nil ]
end
end
sshd_config = if File.exists?("/etc/ssh/sshd_config")
"/etc/ssh/sshd_config"
@@ -45,19 +47,27 @@
if sshd_config
File.open(sshd_config) do |conf|
conf.each_line do |line|
if line.match(/^hostkey\s/i)
pub_file = "#{line.split[1]}.pub"
- key_type = is_dsa_or_rsa?(pub_file)
- keys[:ssh]["host_#{key_type}_public"] = IO.read(pub_file).split[1] unless key_type.nil?
+ content = IO.read(pub_file).split
+ key_type, key_subtype = extract_keytype?(content)
+ keys[:ssh]["host_#{key_type}_public"] = content[1] unless key_type.nil?
+ keys[:ssh]["host_#{key_type}_type"] = key_subtype unless key_subtype.nil?
end
end
end
-else
- if keys[:ssh][:host_dsa_public].nil? && File.exists?("/etc/ssh/ssh_host_dsa_key.pub")
- keys[:ssh][:host_dsa_public] = IO.read("/etc/ssh/ssh_host_dsa_key.pub").split[1]
- end
+end
- if keys[:ssh][:host_rsa_public].nil? && File.exists?("/etc/ssh/ssh_host_rsa_key.pub")
- keys[:ssh][:host_rsa_public] = IO.read("/etc/ssh/ssh_host_rsa_key.pub").split[1]
- end
+if keys[:ssh][:host_dsa_public].nil? && File.exists?("/etc/ssh/ssh_host_dsa_key.pub")
+ keys[:ssh][:host_dsa_public] = IO.read("/etc/ssh/ssh_host_dsa_key.pub").split[1]
+end
+
+if keys[:ssh][:host_rsa_public].nil? && File.exists?("/etc/ssh/ssh_host_rsa_key.pub")
+ keys[:ssh][:host_rsa_public] = IO.read("/etc/ssh/ssh_host_rsa_key.pub").split[1]
+end
+
+if keys[:ssh][:host_ecdsa_public].nil? && File.exists?("/etc/ssh/ssh_host_ecdsa_key.pub")
+ content = IO.read("/etc/ssh/ssh_host_ecdsa_key.pub")
+ keys[:ssh][:host_ecdsa_public] = content.split[1]
+ keys[:ssh][:host_ecdsa_type] = content.split[0]
end