class Net::SSH::Verifiers::Secure
Otherwise, this returns true.
exception will be raised (HostKeyMismatch).
least once, but the key given does not match any known for the server, an
silently add the key to your known_hosts file. If the server does appear at
(HostKeyUnknown). This is in contrast to the “Strict” class, which will
server does not appear in any host file, an exception will be raised
host files to see if a key has already been seen for this server. If this
Does a strict host verification, looking the server up in the known
def process_cache_miss(host_keys, args, exc_class, message)
def process_cache_miss(host_keys, args, exc_class, message) exception = exc_class.new("fingerprint #{args[:fingerprint]} " + "#{message} for #{host_keys.host.inspect}") exception.data = args exception.callback = Proc.new do host_keys.add_host_key(args[:key]) end raise exception end
def verify(arguments)
def verify(arguments) host_keys = arguments[:session].host_keys # We've never seen this host before, so raise an exception. if host_keys.empty? process_cache_miss(host_keys, arguments, HostKeyUnknown, "is unknown") end # If we found any matches, check to see that the key type and # blob also match. found = host_keys.any? do |key| key.ssh_type == arguments[:key].ssh_type && key.to_blob == arguments[:key].to_blob end # If a match was found, return true. Otherwise, raise an exception # indicating that the key was not recognized. unless found process_cache_miss(host_keys, arguments, HostKeyMismatch, "does not match") end found end