Exception: Net::SSH::HostKeyMismatch

Inherits:
Exception
  • Object
show all
Defined in:
lib/net/ssh/errors.rb

Overview

Raised when the cached key for a particular host does not match the key given by the host, which can be indicative of a man-in-the-middle attack. When rescuing this exception, you can inspect the key fingerprint and, if you want to proceed anyway, simply call the remember_host! method on the exception, and then retry.

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#callback=(value) ⇒ Object (writeonly)

the callback to use when #remember_host! is called



45
46
47
# File 'lib/net/ssh/errors.rb', line 45

def callback=(value)
  @callback = value
end

#data=(value) ⇒ Object (writeonly)

situation-specific data describing the host (see #host, #port, etc.)



48
49
50
# File 'lib/net/ssh/errors.rb', line 48

def data=(value)
  @data = value
end

Instance Method Details

#[](key) ⇒ Object

An accessor for getting at the data that was used to look up the host (see also #fingerprint, #host, #port, #ip, and #key).



52
53
54
# File 'lib/net/ssh/errors.rb', line 52

def [](key)
  @data && @data[key]
end

#fingerprintObject

Returns the fingerprint of the key for the host, which either was not found or did not match.



58
59
60
# File 'lib/net/ssh/errors.rb', line 58

def fingerprint
  @data && @data[:fingerprint]
end

#hostObject

Returns the host name for the remote host, as reported by the socket.



63
64
65
# File 'lib/net/ssh/errors.rb', line 63

def host
  @data && @data[:peer] && @data[:peer][:host]
end

#ipObject

Returns the IP address of the remote host, as reported by the socket.



73
74
75
# File 'lib/net/ssh/errors.rb', line 73

def ip
  @data && @data[:peer] && @data[:peer][:ip]
end

#keyObject

Returns the key itself, as reported by the remote host.



78
79
80
# File 'lib/net/ssh/errors.rb', line 78

def key
  @data && @data[:key]
end

#portObject

Returns the port number for the remote host, as reported by the socket.



68
69
70
# File 'lib/net/ssh/errors.rb', line 68

def port
  @data && @data[:peer] && @data[:peer][:port]
end

#remember_host!Object

Tell Net::SSH to record this host and key in the known hosts file, so that subsequent connections will remember them.



84
85
86
# File 'lib/net/ssh/errors.rb', line 84

def remember_host!
  @callback.call
end