diff --git a/lib/backend.py b/lib/backend.py
index 0150ea2c3b5073ba4fa877650c65c50561cefbd0..d71574060dcfb0a2711e3815ec96966cdd638c93 100644
--- a/lib/backend.py
+++ b/lib/backend.py
@@ -1022,14 +1022,14 @@ def ExportSnapshot(disk, dest_node, instance):
 
   comprcmd = "gzip"
 
-  destcmd = utils.BuildShellCmd("mkdir -p %s; cat > %s/%s", 
+  destcmd = utils.BuildShellCmd("mkdir -p %s && cat > %s/%s",
                                 destdir, destdir, destfile)
   remotecmd = ssh.BuildSSHCmd(dest_node, 'root', destcmd)
-  
-  
+
+
 
   # all commands have been checked, so we're safe to combine them
-  command = '|'.join([expcmd, comprcmd, ' '.join(remotecmd)])
+  command = '|'.join([expcmd, comprcmd, utils.ShellQuoteArgs(remotecmd)])
 
   result = utils.RunCmd(command)
 
@@ -1178,7 +1178,7 @@ def ImportOSIntoInstance(instance, os_disk, swap_disk, src_node, src_image):
                                real_os_dev.dev_path, real_swap_dev.dev_path,
                                logfile)
 
-  command = '|'.join([' '.join(remotecmd), comprcmd, impcmd])
+  command = '|'.join([utils.ShellQuoteArgs(remotecmd), comprcmd, impcmd])
 
   result = utils.RunCmd(command)
 
diff --git a/lib/ssh.py b/lib/ssh.py
index 55a329292201a75ccfab3f0a11db26ca59ba8af5..2f33d462a9859519d67bfb7f772930bd79c56ffd 100644
--- a/lib/ssh.py
+++ b/lib/ssh.py
@@ -54,6 +54,7 @@ ASK_KEY_OPTS = [
   "-oHashKnownHosts=no",
   ]
 
+
 def BuildSSHCmd(hostname, user, command, batch=True, ask_key=False):
   """Build an ssh string to execute a command on a remote node.
 
@@ -78,7 +79,7 @@ def BuildSSHCmd(hostname, user, command, batch=True, ask_key=False):
     argv.extend(BATCH_MODE_OPTS)
   elif ask_key:
     argv.extend(ASK_KEY_OPTS)
-  argv.extend(["%s@%s" % (user, hostname), "'%s'" % command])
+  argv.extend(["%s@%s" % (user, hostname), command])
   return argv