diff --git a/NEWS b/NEWS
index 428d202194e30928d5b08cb58fcb5915b0145853_TkVXUw==..a5b112befe92fde4f6c4d9637d5571cb2a9c7df8_TkVXUw== 100644
--- a/NEWS
+++ b/NEWS
@@ -12,6 +12,20 @@
 Releases
 ========
 
+v1.11.3 (8th Jan 2014)
+----------------------
+
+* #176: Fix AttributeError bugs in known_hosts file (re)loading. Thanks to
+  Nathan Scowcroft for the patch & Martin Blumenstingl for the initial test
+  case.
+
+v1.10.5 (8th Jan 2014)
+----------------------
+
+* #176: Fix AttributeError bugs in known_hosts file (re)loading. Thanks to
+  Nathan Scowcroft for the patch & Martin Blumenstingl for the initial test
+  case.
+
 v1.11.2 (27th Sep 2013)
 -----------------------
 
diff --git a/paramiko/client.py b/paramiko/client.py
index 428d202194e30928d5b08cb58fcb5915b0145853_cGFyYW1pa28vY2xpZW50LnB5..a5b112befe92fde4f6c4d9637d5571cb2a9c7df8_cGFyYW1pa28vY2xpZW50LnB5 100644
--- a/paramiko/client.py
+++ b/paramiko/client.py
@@ -189,8 +189,8 @@
 
         # update local host keys from file (in case other SSH clients
         # have written to the known_hosts file meanwhile.
-        if self.known_hosts is not None:
-            self.load_host_keys(self.known_hosts)
+        if self._host_keys_filename is not None:
+            self.load_host_keys(self._host_keys_filename)
 
         f = open(filename, 'w')
         for hostname, keys in self._host_keys.iteritems():
diff --git a/tests/test_client.py b/tests/test_client.py
index 428d202194e30928d5b08cb58fcb5915b0145853_dGVzdHMvdGVzdF9jbGllbnQucHk=..a5b112befe92fde4f6c4d9637d5571cb2a9c7df8_dGVzdHMvdGVzdF9jbGllbnQucHk= 100644
--- a/tests/test_client.py
+++ b/tests/test_client.py
@@ -20,8 +20,9 @@
 Some unit tests for SSHClient.
 """
 
+from __future__ import with_statement # Python 2.5 support
 import socket
 import threading
 import time
 import unittest
 import weakref
@@ -23,8 +24,10 @@
 import socket
 import threading
 import time
 import unittest
 import weakref
+import warnings
+import os
 from binascii import hexlify
 
 import paramiko
@@ -184,7 +187,33 @@
         self.assertEquals(1, len(self.tc.get_host_keys()))
         self.assertEquals(public_host_key, self.tc.get_host_keys()['[%s]:%d' % (self.addr, self.port)]['ssh-rsa'])
 
-    def test_5_cleanup(self):
+    def test_5_save_host_keys(self):
+        """
+        verify that SSHClient correctly saves a known_hosts file.
+        """
+        warnings.filterwarnings('ignore', 'tempnam.*')
+
+        host_key = paramiko.RSAKey.from_private_key_file('tests/test_rsa.key')
+        public_host_key = paramiko.RSAKey(data=str(host_key))
+        localname = os.tempnam()
+
+        client = paramiko.SSHClient()
+        self.assertEquals(0, len(client.get_host_keys()))
+
+        host_id = '[%s]:%d' % (self.addr, self.port)
+
+        client.get_host_keys().add(host_id, 'ssh-rsa', public_host_key)
+        self.assertEquals(1, len(client.get_host_keys()))
+        self.assertEquals(public_host_key, client.get_host_keys()[host_id]['ssh-rsa'])
+
+        client.save_host_keys(localname)
+
+        with open(localname) as fd:
+            assert host_id in fd.read()
+
+        os.unlink(localname)
+
+    def test_6_cleanup(self):
         """
         verify that when an SSHClient is collected, its transport (and the
         transport's packetizer) is closed.