diff --git a/scripts/gnt-node b/scripts/gnt-node
index dace8eb6f4ff56dfb788627c54a130ded20c4963..c081f1ce5d1b8beb5730752e63cb57ca4452893c 100755
--- a/scripts/gnt-node
+++ b/scripts/gnt-node
@@ -29,6 +29,7 @@
 import sys
 
 from ganeti.cli import *
+from ganeti import bootstrap
 from ganeti import opcodes
 from ganeti import utils
 from ganeti import constants
@@ -147,6 +148,8 @@ def _RunSetupSSH(options, nodes):
     cmd.append("--debug")
   elif options.verbose:
     cmd.append("--verbose")
+  if options.ssh_key_check:
+    cmd.append("--no-ssh-key-check")
 
   cmd.extend(nodes)
 
@@ -195,8 +198,9 @@ def AddNode(opts, args):
 
   # read the cluster name from the master
   output = cl.QueryConfigValues(['cluster_name'])
+  cluster_name = output[0]
 
-  if not readd:
+  if not readd and opts.node_setup:
     ToStderr("-- WARNING -- \n"
              "Performing this operation is going to replace the ssh daemon"
              " keypair\n"
@@ -207,6 +211,8 @@ def AddNode(opts, args):
   if opts.node_setup:
     _RunSetupSSH(opts, [node])
 
+  bootstrap.SetupNodeDaemon(cluster_name, node, opts.ssh_key_check)
+
   op = opcodes.OpAddNode(node_name=args[0], secondary_ip=sip,
                          readd=opts.readd)
   SubmitOpCode(op, opts=opts)
@@ -667,8 +673,9 @@ def SetNodeParams(opts, args):
 commands = {
   'add': (
     AddNode, [ArgHost(min=1, max=1)],
-    [SECONDARY_IP_OPT, READD_OPT, NONODE_SETUP_OPT, VERBOSE_OPT],
-    "[-s ip] [--readd] [--no-node-setup]  [--verbose] "
+    [SECONDARY_IP_OPT, READD_OPT, NOSSH_KEYCHECK_OPT, NONODE_SETUP_OPT,
+     VERBOSE_OPT],
+    "[-s ip] [--readd] [--no-ssh-key-check] [--no-node-setup]  [--verbose] "
     " <node_name>",
     "Add a node to the cluster"),
   'evacuate': (
diff --git a/tools/setup-ssh b/tools/setup-ssh
index 2dd2c9ab601617ccb7611be34ae4fe98dd23fb18..d03ddff68484b6202dd71fcf53e7a8e5b01cb80c 100755
--- a/tools/setup-ssh
+++ b/tools/setup-ssh
@@ -153,20 +153,6 @@ def SetupSSH(transport):
   _InvokeDaemonUtil(transport, "reload-ssh-keys")
 
 
-def SetupNodeDaemon(transport):
-  """Sets the node daemon up on the other side.
-
-  @param transport: The paramiko transport instance
-
-  """
-  noded_cert = utils.ReadFile(constants.NODED_CERT_FILE)
-
-  sftp = transport.open_sftp_client()
-  _WriteSftpFile(sftp, constants.NODED_CERT_FILE, 0400, noded_cert)
-
-  _InvokeDaemonUtil(transport, "start %s" % constants.NODED)
-
-
 def ParseOptions():
   """Parses options passed to program.
 
@@ -383,7 +369,6 @@ def main():
     try:
       try:
         SetupSSH(transport)
-        SetupNodeDaemon(transport)
       except errors.GenericError, err:
         logging.error("While doing setup on host %s an error occured: %s",
                       host, err)