diff --git a/test/runner/lib/executor.py b/test/runner/lib/executor.py
index 8f50cbf684b..a6f14b8f7ea 100644
--- a/test/runner/lib/executor.py
+++ b/test/runner/lib/executor.py
@@ -21,6 +21,7 @@ import lib.thread
 
 from lib.core_ci import (
     AnsibleCoreCI,
+    SshKey,
 )
 
 from lib.manage_ci import (
@@ -188,6 +189,9 @@ def command_network_integration(args):
     if args.platform:
         instances = []  # type: list [lib.thread.WrappedThread]
 
+        # generate an ssh key (if needed) up front once, instead of for each instance
+        SshKey(args)
+
         for platform_version in args.platform:
             platform, version = platform_version.split('/', 1)
             platform_target = 'network/%s/' % platform