a lot of changes
diff --git a/wally/ssh_utils.py b/wally/ssh_utils.py
index 7a37c4b..7b6d593 100644
--- a/wally/ssh_utils.py
+++ b/wally/ssh_utils.py
@@ -5,6 +5,7 @@
 import logging
 import os.path
 import getpass
+import StringIO
 import threading
 import subprocess
 
@@ -64,6 +65,15 @@
         return False
 
 
+NODE_KEYS = {}
+
+
+def set_key_for_node(host_port, key):
+    sio = StringIO.StringIO(key)
+    NODE_KEYS[host_port] = paramiko.RSAKey.from_private_key(sio)
+    sio.close()
+
+
 def ssh_connect(creds, conn_timeout=60):
     if creds == 'local':
         return Local
@@ -101,6 +111,14 @@
                             look_for_keys=False,
                             port=creds.port,
                             banner_timeout=c_banner_timeout)
+            elif (creds.host, creds.port) in NODE_KEYS:
+                ssh.connect(creds.host,
+                            username=creds.user,
+                            timeout=c_tcp_timeout,
+                            pkey=NODE_KEYS[(creds.host, creds.port)],
+                            look_for_keys=False,
+                            port=creds.port,
+                            banner_timeout=c_banner_timeout)
             else:
                 key_file = os.path.expanduser('~/.ssh/id_rsa')
                 ssh.connect(creds.host,