diff --git a/wagon-provider-api/src/main/java/org/apache/maven/wagon/authentication/AuthenticationInfo.java b/wagon-provider-api/src/main/java/org/apache/maven/wagon/authentication/AuthenticationInfo.java
index 6e92717..60d5708 100644
--- a/wagon-provider-api/src/main/java/org/apache/maven/wagon/authentication/AuthenticationInfo.java
+++ b/wagon-provider-api/src/main/java/org/apache/maven/wagon/authentication/AuthenticationInfo.java
@@ -43,7 +43,7 @@
     private String password;
 
     /**
-     * Passphrase of the user's private key file
+     * Passphrase of the user's private key
      */
     private String passphrase;
 
@@ -53,11 +53,16 @@
     private String privateKey;
 
     /**
-     * Get the passphrase of the private key file. The passphrase is used only
+     * The private key file content (if key is in a package like JAR, WAR, ...)
+     */
+    private byte[] privateKeyContent;
+
+    /**
+     * Get the passphrase of the private key. The passphrase is used only
      * when host/protocol supports authentication via exchange of
      * private/public keys and private key was used for authentication.
      *
-     * @return passphrase of the private key file
+     * @return passphrase of the private key
      */
     public String getPassphrase()
     {
@@ -65,9 +70,9 @@
     }
 
     /**
-     * Set the passphrase of the private key file.
+     * Set the passphrase of the private key.
      *
-     * @param passphrase passphrase of the private key file
+     * @param passphrase passphrase of the private key
      */
     public void setPassphrase( final String passphrase )
     {
@@ -95,6 +100,26 @@
     }
 
     /**
+     * Get the private key content.
+     *
+     * @return private key content
+     */
+    public byte[] getPrivateKeyContent()
+    {
+        return privateKeyContent;
+    }
+
+    /**
+     * Set private key content.
+     *
+     * @param privateKeyContent private key content
+     */
+    public void setPrivateKeyContent( final byte[] privateKeyContent )
+    {
+        this.privateKeyContent = privateKeyContent;
+    }
+
+    /**
      * Get the user's password which is used when connecting to the repository.
      *
      * @return password of user
diff --git a/wagon-providers/wagon-ssh/src/main/java/org/apache/maven/wagon/providers/ssh/jsch/AbstractJschWagon.java b/wagon-providers/wagon-ssh/src/main/java/org/apache/maven/wagon/providers/ssh/jsch/AbstractJschWagon.java
index 7e87d2d..cc00ba7 100644
--- a/wagon-providers/wagon-ssh/src/main/java/org/apache/maven/wagon/providers/ssh/jsch/AbstractJschWagon.java
+++ b/wagon-providers/wagon-ssh/src/main/java/org/apache/maven/wagon/providers/ssh/jsch/AbstractJschWagon.java
@@ -27,6 +27,7 @@
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.OutputStream;
+import java.nio.charset.StandardCharsets;
 import java.util.List;
 import java.util.Properties;
 
@@ -148,6 +149,19 @@
                 throw new AuthenticationException( "Cannot connect. Reason: " + e.getMessage(), e );
             }
         }
+        else if ( authenticationInfo.getPrivateKeyContent() != null )
+        {
+            fireSessionDebug( "Using private key content" );
+            try
+            {
+                sch.addIdentity( null, authenticationInfo.getPrivateKeyContent(), null,
+                                 authenticationInfo.getPassphrase().getBytes( StandardCharsets.UTF_8 ) );
+            }
+            catch ( JSchException e )
+            {
+                throw new AuthenticationException( "Cannot connect. Reason: " + e.getMessage(), e );
+            }
+        }
         else
         {
             try
