diff --git a/protocols/netconf/api/src/main/java/org/onosproject/netconf/NetconfDeviceInfo.java b/protocols/netconf/api/src/main/java/org/onosproject/netconf/NetconfDeviceInfo.java
index 3ebb982..8d16873 100644
--- a/protocols/netconf/api/src/main/java/org/onosproject/netconf/NetconfDeviceInfo.java
+++ b/protocols/netconf/api/src/main/java/org/onosproject/netconf/NetconfDeviceInfo.java
@@ -23,16 +23,15 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.io.File;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.Objects;
 import java.util.Optional;
 import java.util.OptionalInt;
 
+import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.base.Preconditions.checkNotNull;
+
 /**
  * Represents a Netconf device information.
  */
@@ -46,9 +45,6 @@
     private IpAddress ipAddress;
     private int port;
     private char[] key;
-    //File keyFile @deprecated 1.9.0
-    @Deprecated
-    private File keyFile;
     private Optional<NetconfSshClientLib> sshClientLib;
     private OptionalInt connectTimeoutSec;
     private OptionalInt replyTimeoutSec;
@@ -88,10 +84,6 @@
      * @param port      the tcp port
      * @param keyString the string containing a DSA or RSA private key
      *                  of the user in OpenSSH key format
-     *                  <br>
-     *                  (Pre 1.9.0 behaviour: {@code keyString} can be file path
-     *                  to a file containing DSA or RSA private key of the user
-     *                  in OpenSSH key format)
      */
     public NetconfDeviceInfo(String name, String password, IpAddress ipAddress,
                              int port, String keyString) {
@@ -103,7 +95,6 @@
         this.ipAddress = ipAddress;
         this.port = port;
         this.key = keyString.toCharArray();
-        this.keyFile = new File(keyString);
         this.sshClientLib = Optional.empty();
         this.connectTimeoutSec = OptionalInt.empty();
         this.replyTimeoutSec = OptionalInt.empty();
@@ -126,7 +117,6 @@
         if (netconfConfig.sshKey() != null && !netconfConfig.sshKey().isEmpty()) {
             this.key = netconfConfig.sshKey().toCharArray();
         }
-        this.keyFile = new File(netconfConfig.sshKey());
         if (netconfConfig.sshClient().isPresent()) {
             this.sshClientLib = Optional.of(NetconfSshClientLib.getEnum(netconfConfig.sshClient().get()));
         } else {
@@ -221,19 +211,6 @@
     }
 
     /**
-     * Exposes the keyFile of the controller.
-     *
-     * @return File object pointing to a file containing a DSA or RSA
-     *         private key of the user in OpenSSH key format,
-     *         or null if device is not configured to use public key authentication
-     * @deprecated 1.9.0
-     */
-    @Deprecated
-    public File getKeyFile() {
-        return keyFile;
-    }
-
-    /**
      * Exposes the Client library implementation.
      *
      * @return Enumerated value
