diff --git a/src/plugins/remotelinux/remotelinuxapplicationrunner.cpp b/src/plugins/remotelinux/remotelinuxapplicationrunner.cpp
index bb8e4350dc73fac0919a691efd6e70e24534c450..ab72f824d0b041d46492a8078a859419d3192e3d 100644
--- a/src/plugins/remotelinux/remotelinuxapplicationrunner.cpp
+++ b/src/plugins/remotelinux/remotelinuxapplicationrunner.cpp
@@ -333,8 +333,14 @@ void AbstractRemoteLinuxApplicationRunner::emitError(const QString &errorMsg, bo
 
 void AbstractRemoteLinuxApplicationRunner::handlePortsGathererError(const QString &errorMsg)
 {
-    if (m_d->state != Inactive)
-        emitError(errorMsg);
+    if (m_d->state != Inactive) {
+        if (connection()->errorState() != SshNoError) {
+            emitError(errorMsg);
+        } else {
+            emit reportProgress(tr("Gathering ports failed: %1\nContinuing anyway.").arg(errorMsg));
+            handleUsedPortsAvailable();
+        }
+    }
 }
 
 void AbstractRemoteLinuxApplicationRunner::handleUsedPortsAvailable()
diff --git a/src/plugins/remotelinux/remotelinuxusedportsgatherer.cpp b/src/plugins/remotelinux/remotelinuxusedportsgatherer.cpp
index c824a1542bdcc73c35dc152728c5734ed931db92..bd790d06b3f4601ba3efc6d4a753826f6c18a1db 100644
--- a/src/plugins/remotelinux/remotelinuxusedportsgatherer.cpp
+++ b/src/plugins/remotelinux/remotelinuxusedportsgatherer.cpp
@@ -161,8 +161,8 @@ void RemoteLinuxUsedPortsGatherer::handleProcessClosed(int exitStatus)
         if (m_d->procRunner->process()->exitCode() == 0) {
             setupUsedPorts();
         } else {
-            errMsg = tr("Remote process failed: %1")
-                .arg(m_d->procRunner->process()->errorString());
+            errMsg = tr("Remote process failed; exit code was %1.")
+                .arg(m_d->procRunner->process()->exitCode());
         }
         break;
     default: