Class AbstractKnownHostsKeyVerification

java.lang.Object
com.sshtools.j2ssh.transport.AbstractKnownHostsKeyVerification
All Implemented Interfaces:
HostKeyVerification
Direct Known Subclasses:
ConsoleKnownHostsKeyVerification, DialogKnownHostsKeyVerification

public abstract class AbstractKnownHostsKeyVerification extends Object implements HostKeyVerification

An abstract HostKeyVerification class providing validation against the known_hosts format.

Since:
0.2.0
Version:
$Revision: 1.18 $
Author:
Lee David Painter
  • Constructor Details

    • AbstractKnownHostsKeyVerification

      public AbstractKnownHostsKeyVerification(String knownhosts) throws InvalidHostFileException

      Constructs a host key verification instance reading the specified known_hosts file.

      Parameters:
      knownhosts - the path of the known_hosts file
      Throws:
      InvalidHostFileException - if the known_hosts file is invalid
      Since:
      0.2.0
  • Method Details

    • isHostFileWriteable

      public boolean isHostFileWriteable()

      Determines whether the host file is writable.

      Returns:
      true if the host file is writable, otherwise false
      Since:
      0.2.0
    • onHostKeyMismatch

      public abstract void onHostKeyMismatch(String host, SshPublicKey allowedHostKey, SshPublicKey actualHostKey) throws TransportProtocolException

      Called by the verifyHost method when the host key supplied by the host does not match the current key recording in the known hosts file.

      Parameters:
      host - the name of the host
      allowedHostKey - the current key recorded in the known_hosts file.
      actualHostKey - the actual key supplied by the user
      Throws:
      TransportProtocolException - if an error occurs
      Since:
      0.2.0
    • onUnknownHost

      public abstract void onUnknownHost(String host, SshPublicKey key) throws TransportProtocolException

      Called by the verifyHost method when the host key supplied is not recorded in the known_hosts file.

      Parameters:
      host - the name of the host
      key - the public key supplied by the host
      Throws:
      TransportProtocolException - if an error occurs
      Since:
      0.2.0
    • allowHost

      public void allowHost(String host, SshPublicKey pk, boolean always) throws InvalidHostFileException

      Allows a host key, optionally recording the key to the known_hosts file.

      Parameters:
      host - the name of the host
      pk - the public key to allow
      always - true if the key should be written to the known_hosts file
      Throws:
      InvalidHostFileException - if the host file cannot be written
      Since:
      0.2.0
    • allowedHosts

      public Map allowedHosts()

      Returns a Map of the allowed hosts.

      The keys of the returned Map are comma separated strings of "hostname,ipaddress". The value objects are Maps containing a string key of the public key alogorithm name and the public key as the value.

      Returns:
      the allowed hosts
      Since:
      0.2.0
    • removeAllowedHost

      public void removeAllowedHost(String host)

      Removes an allowed host.

      Parameters:
      host - the host to remove
      Since:
      0.2.0
    • verifyHost

      public boolean verifyHost(String host, SshPublicKey pk) throws TransportProtocolException

      Verifies a host key against the list of known_hosts.

      If the host unknown or the key does not match the currently allowed host key the abstract onUnknownHost or onHostKeyMismatch methods are called so that the caller may identify and allow the host.

      Specified by:
      verifyHost in interface HostKeyVerification
      Parameters:
      host - the name of the host
      pk - the host key supplied
      Returns:
      true if the host is accepted, otherwise false
      Throws:
      TransportProtocolException - if an error occurs
      Since:
      0.2.0
    • saveHostFile

      public void saveHostFile() throws InvalidHostFileException

      Save's the host key file to be saved.

      Throws:
      InvalidHostFileException - if the host file is invalid
      Since:
      0.2.0
    • toString

      public String toString()

      Outputs the allowed hosts in the known_hosts file format.

      The format consists of any number of lines each representing one key for a single host.

      titan,192.168.1.12 ssh-dss AAAAB3NzaC1kc3MAAACBAP1/U4Ed..... titan,192.168.1.12 ssh-rsa AAAAB3NzaC1kc3MAAACBAP1/U4Ed..... einstein,192.168.1.40 ssh-dss AAAAB3NzaC1kc3MAAACBAP1/U4Ed.....
      Overrides:
      toString in class Object
      Returns:
      Since:
      0.2.0