diff --git a/NEWS b/NEWS
index 792a1d02b152faa06499141287d311c0f02af625_TkVXUw==..ac165c385b7d4b47931352c885c4b2ad5baa21d0_TkVXUw== 100644
--- a/NEWS
+++ b/NEWS
@@ -32,6 +32,8 @@
 v1.10.2 (DD MM 2013)
 --------------------
 
+* #153, #67: Warn on parse failure when reading known_hosts
+  file. Thanks to `@glasserc` for patch.
 * #146: Indentation fixes for readability. Thanks to Abhinav Upadhyay for catch
   & patch.
 
diff --git a/paramiko/hostkeys.py b/paramiko/hostkeys.py
index 792a1d02b152faa06499141287d311c0f02af625_cGFyYW1pa28vaG9zdGtleXMucHk=..ac165c385b7d4b47931352c885c4b2ad5baa21d0_cGFyYW1pa28vaG9zdGtleXMucHk= 100644
--- a/paramiko/hostkeys.py
+++ b/paramiko/hostkeys.py
@@ -28,6 +28,7 @@
 from paramiko.common import *
 from paramiko.dsskey import DSSKey
 from paramiko.rsakey import RSAKey
+from paramiko.util import get_logger
 
 
 class InvalidHostKey(Exception):
@@ -48,7 +49,7 @@
         self.hostnames = hostnames
         self.key = key
 
-    def from_line(cls, line):
+    def from_line(cls, line, lineno=None):
         """
         Parses the given line of text to find the names for the host,
         the type of key, and the key data. The line is expected to be in the
@@ -61,6 +62,7 @@
         @param line: a line from an OpenSSH known_hosts file
         @type line: str
         """
+        log = get_logger('paramiko.hostkeys')
         fields = line.split(' ')
         if len(fields) < 3:
             # Bad number of fields
@@ -64,6 +66,8 @@
         fields = line.split(' ')
         if len(fields) < 3:
             # Bad number of fields
+            log.warn("Not enough fields found in known_hosts in line %s (%r)" %
+                     (lineno, line))
             return None
         fields = fields[:3]
 
@@ -78,6 +82,7 @@
             elif keytype == 'ssh-dss':
                 key = DSSKey(data=base64.decodestring(key))
             else:
+                log.warn("Unable to handle key of type %s" % (keytype,))
                 return None
         except binascii.Error, e:
             raise InvalidHostKey(line, e)
@@ -160,7 +165,7 @@
         @raise IOError: if there was an error reading the file
         """
         f = open(filename, 'r')
-        for line in f:
+        for lineno, line in enumerate(f):
             line = line.strip()
             if (len(line) == 0) or (line[0] == '#'):
                 continue
@@ -164,7 +169,7 @@
             line = line.strip()
             if (len(line) == 0) or (line[0] == '#'):
                 continue
-            e = HostKeyEntry.from_line(line)
+            e = HostKeyEntry.from_line(line, lineno)
             if e is not None:
                 _hostnames = e.hostnames
                 for h in _hostnames: