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 7367b34..9ae7625 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
@@ -128,20 +128,7 @@
             throw new AuthenticationException( e.getMessage() );
         }
 
-        try
-        {
-            Connector connector = ConnectorFactory.getDefault().createConnector();
-            if ( connector != null )
-            {
-                IdentityRepository repo = new RemoteIdentityRepository( connector );
-                sch.setIdentityRepository( repo );
-            }
-        }
-        catch ( AgentProxyException e )
-        {
-            fireSessionDebug( "Unable to connect to agent: " + e.toString() );
-        }
-
+        //can only pick one method of authentication
         if ( privateKey != null && privateKey.exists() )
         {
             fireSessionDebug( "Using private key: " + privateKey );
@@ -154,6 +141,23 @@
                 throw new AuthenticationException( "Cannot connect. Reason: " + e.getMessage(), e );
             }
         }
+        else
+        {
+            try
+            {
+                Connector connector = ConnectorFactory.getDefault().createConnector();
+                if ( connector != null )
+                {
+                    IdentityRepository repo = new RemoteIdentityRepository( connector );
+                    sch.setIdentityRepository( repo );
+                }
+            }
+            catch ( AgentProxyException e )
+            {
+                fireSessionDebug( "Unable to connect to agent: " + e.toString() );
+            }
+
+        }
 
         String host = getRepository().getHost();
         int port =
