diff --git a/noblogsmv/main.py b/noblogsmv/main.py
index e279ccf56562565970769549eae23c1ca7709def..bf6ca942e698faf75529d05152240d96b0de0b78 100644
--- a/noblogsmv/main.py
+++ b/noblogsmv/main.py
@@ -1,3 +1,4 @@
+import glob
 import logging
 import optparse
 import os
@@ -39,21 +40,33 @@ def sshcmd(*args):
         '-o', 'StrictHostKeyChecking=no',
         '-o', 'ControlMaster=auto',
         '-o', 'ControlPath=.ssh_ctrl_%h',
+        '-o', 'ControlPersist=yes',
     ] + list(args)
 
 
+def ssh_cleanup():
+    log.info('cleaning up SSH control sockets...')
+    for path in glob.glob('.ssh_ctrl_*'):
+        subprocess.check_call([
+            'ssh',
+            '-o', 'ControlMaster=auto',
+            '-o', 'ControlPath=%s' % path,
+            '-O', 'exit',
+            'unused'])
+
+
 class MysqlNoblogs(object):
     conn = collections.namedtuple('DbData',
                                   ['host', 'port', 'user', 'password', 'db'])
 
-    def __init__(self, old_host,old_port,old_user,old_pass,old_db,
-                 new_host,new_port,new_user,new_pass,new_db,**kwd):
-        self.old = self.conn(old_host,old_port,old_user,old_pass, old_db)
-        self.new = self.conn(new_host,new_port,new_user,new_pass, new_db)
+    def __init__(self, old_host, old_port, old_user, old_pass, old_db,
+                 new_host, new_port, new_user, new_pass, new_db, **kwd):
+        self.old = self.conn(old_host, old_port, old_user, old_pass, old_db)
+        self.new = self.conn(new_host, new_port, new_user, new_pass, new_db)
 
     def options(self, conn):
-        return '-h%s -P%s -u%s -p%s' % (conn.host,conn.port,
-                                        conn.user,conn.password)
+        return '-h%s -P%s -u%s -p%s' % (conn.host, conn.port,
+                                        conn.user, conn.password)
 
     @property
     def old_options(self):
@@ -180,6 +193,7 @@ def process_rm_data(blog_id, value, progress):
 class NoblogsStateMachine(state.StateMachine):
     pass
 
+
 class NoblogsMoveStateMachine(NoblogsStateMachine):
 
     states = {
@@ -261,6 +275,8 @@ use the `--recover' option.
 
     sm.run()
 
+    ssh_cleanup()
+
     if opts.noexit:
         # This will never return.
         httpserver.join()