diff --git a/src/osmo_gsm_tester/core/process.py b/src/osmo_gsm_tester/core/process.py
index eaf8de7..0b96f2e 100644
--- a/src/osmo_gsm_tester/core/process.py
+++ b/src/osmo_gsm_tester/core/process.py
@@ -381,12 +381,14 @@
 
 class RemoteProcess(Process):
 
-    def __init__(self, name, run_dir, remote_user, remote_host, remote_cwd, popen_args, remote_env={}, **popen_kwargs):
+    def __init__(self, name, run_dir, remote_user, remote_host, remote_cwd, popen_args,
+                 remote_env={}, remote_port=None, **popen_kwargs):
         super().__init__(name, run_dir, popen_args, **popen_kwargs)
         self.remote_user = remote_user
         self.remote_host = remote_host
         self.remote_cwd = remote_cwd
         self.remote_env = remote_env
+        self.remote_port = remote_port
 
         # hacky: instead of just prepending ssh, i.e. piping stdout and stderr
         # over the ssh link, we should probably run on the remote side,
@@ -402,6 +404,10 @@
                            '%s %s %s' % (cd,
                                          ' '.join(['%s=%r'%(k,v) for k,v in self.remote_env.items()]),
                                          ' '.join(self.popen_args))]
+        if self.remote_port:
+            self.popen_args.insert(1, '-p')
+            self.popen_args.insert(2, self.remote_port)
+
         self.dbg(self.popen_args, dir=self.run_dir, conf=self.popen_kwargs, remote_env=self.remote_env)
 
     def RunError(self, msg_prefix):
diff --git a/src/osmo_gsm_tester/core/remote.py b/src/osmo_gsm_tester/core/remote.py
index 8deb25d..0ea873d 100644
--- a/src/osmo_gsm_tester/core/remote.py
+++ b/src/osmo_gsm_tester/core/remote.py
@@ -28,13 +28,14 @@
 
     WRAPPER_SCRIPT = 'ssh_sigkiller.sh'
 
-    def __init__(self, run_dir, remote_user = 'root', remote_host = 'localhost', remote_cwd=None):
+    def __init__(self, run_dir, remote_user = 'root', remote_host = 'localhost', remote_cwd=None, remote_port=None):
         super().__init__(log.C_RUN, 'host-' + remote_user + '@' + remote_host)
         self.run_dir = util.Dir(run_dir.new_dir(self.name()))
         self.remote_user = remote_user
         self.remote_host = remote_host
         self.remote_cwd = remote_cwd
         self.remote_env = {}
+        self.remote_port = remote_port
 
     def user(self):
         return self.remote_user
@@ -51,9 +52,13 @@
     def get_remote_env(self):
         return self.remote_env
 
+    def get_remote_port(self):
+        return self.remote_port
+
     def RemoteProcess(self, name, popen_args, remote_env={}, **popen_kwargs):
         run_dir = self.run_dir.new_dir(name)
-        return process.RemoteProcess(name, run_dir, self.user(), self.host(), self.cwd(), popen_args, remote_env=remote_env, **popen_kwargs)
+        return process.RemoteProcess(name, run_dir, self.user(), self.host(), self.cwd(), popen_args,
+                                     remote_env=remote_env, remote_port=self.get_remote_port(), **popen_kwargs)
 
     def generate_wrapper_script(self, wait_time_sec):
         wrapper_script = self.run_dir.new_file(RemoteHost.WRAPPER_SCRIPT)
