<?xml version="1.0" encoding="ascii"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>paramiko.HostKeys</title> <link rel="stylesheet" href="epydoc.css" type="text/css" /> <script type="text/javascript" src="epydoc.js"></script> </head> <body bgcolor="white" text="black" link="blue" vlink="#204080" alink="#204080"> <!-- ==================== NAVIGATION BAR ==================== --> <table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> <tr valign="middle"> <!-- Home link --> <th> <a href="paramiko-module.html">Home</a> </th> <!-- Tree link --> <th> <a href="module-tree.html">Trees</a> </th> <!-- Index link --> <th> <a href="identifier-index.html">Indices</a> </th> <!-- Help link --> <th> <a href="help.html">Help</a> </th> <th class="navbar" width="100%"></th> </tr> </table> <table width="100%" cellpadding="0" cellspacing="0"> <tr valign="top"> <td width="100%"> <span class="breadcrumbs"> <a href="paramiko-module.html">Package paramiko</a> :: Class HostKeys </span> </td> <td> <table cellpadding="0" cellspacing="0"> <!-- hide/show private --> <tr><td align="right"><span class="options" >[<a href="frames.html" target="_top">frames</a >] | <a href="paramiko.HostKeys-class.html" target="_top">no frames</a>]</span></td></tr> </table> </td> </tr> </table> <!-- ==================== CLASS DESCRIPTION ==================== --> <h1 class="epydoc">Class HostKeys</h1><p class="nomargin-top"><span class="codelink"><a href="paramiko-pysrc.html#HostKeys">source code</a></span></p> <pre class="base-tree"> UserDict.DictMixin --+ | <strong class="uidshort">HostKeys</strong> </pre> <hr /> <p>Representation of an openssh-style "known hosts" file. Host keys can be read from one or more files, and then individual hosts can be looked up to verify server keys during SSH negotiation.</p> <p>A HostKeys object can be treated like a dict; any dict lookup is equivalent to calling <a href="paramiko.HostKeys-class.html#lookup" class="link">lookup</a>.</p> <hr /> <div class="fields"> <p><strong>Since:</strong> 1.5.3 </p> </div><!-- ==================== INSTANCE METHODS ==================== --> <a name="section-InstanceMethods"></a> <table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr bgcolor="#70b0f0" class="table-header"> <td align="left" colspan="2" class="table-header"> <span class="table-header">Instance Methods</span></td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a name="__getitem__"></a><span class="summary-sig-name">__getitem__</span>(<span class="summary-sig-arg">self</span>, <span class="summary-sig-arg">key</span>)</span></td> <td align="right" valign="top"> <span class="codelink"><a href="paramiko.hostkeys-pysrc.html">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="paramiko.HostKeys-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>, <span class="summary-sig-arg">filename</span>=<span class="summary-sig-default">None</span>)</span><br /> Create a new HostKeys object, optionally loading keys from an openssh style host-key file.</td> <td align="right" valign="top"> <span class="codelink"><a href="paramiko.hostkeys-pysrc.html">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a name="__setitem__"></a><span class="summary-sig-name">__setitem__</span>(<span class="summary-sig-arg">self</span>, <span class="summary-sig-arg">hostname</span>, <span class="summary-sig-arg">entry</span>)</span></td> <td align="right" valign="top"> <span class="codelink"><a href="paramiko.hostkeys-pysrc.html">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="paramiko.HostKeys-class.html#add" class="summary-sig-name">add</a>(<span class="summary-sig-arg">self</span>, <span class="summary-sig-arg">hostname</span>, <span class="summary-sig-arg">keytype</span>, <span class="summary-sig-arg">key</span>)</span><br /> Add a host key entry to the table.</td> <td align="right" valign="top"> <span class="codelink"><a href="paramiko.hostkeys-pysrc.html">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type">bool</span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="paramiko.HostKeys-class.html#check" class="summary-sig-name">check</a>(<span class="summary-sig-arg">self</span>, <span class="summary-sig-arg">hostname</span>, <span class="summary-sig-arg">key</span>)</span><br /> Return True if the given key is associated with the given hostname in this dictionary.</td> <td align="right" valign="top"> <span class="codelink"><a href="paramiko.hostkeys-pysrc.html">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="paramiko.HostKeys-class.html#clear" class="summary-sig-name">clear</a>(<span class="summary-sig-arg">self</span>)</span><br /> Remove all host keys from the dictionary.</td> <td align="right" valign="top"> <span class="codelink"><a href="paramiko.hostkeys-pysrc.html">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a name="keys"></a><span class="summary-sig-name">keys</span>(<span class="summary-sig-arg">self</span>)</span></td> <td align="right" valign="top"> <span class="codelink"><a href="paramiko.hostkeys-pysrc.html">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="paramiko.HostKeys-class.html#load" class="summary-sig-name">load</a>(<span class="summary-sig-arg">self</span>, <span class="summary-sig-arg">filename</span>)</span><br /> Read a file of known SSH host keys, in the format used by openssh.</td> <td align="right" valign="top"> <span class="codelink"><a href="paramiko.hostkeys-pysrc.html">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type">dict(str, <a href="paramiko.PKey-class.html" class="link">PKey</a>)</span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="paramiko.HostKeys-class.html#lookup" class="summary-sig-name">lookup</a>(<span class="summary-sig-arg">self</span>, <span class="summary-sig-arg">hostname</span>)</span><br /> Find a hostkey entry for a given hostname or IP.</td> <td align="right" valign="top"> <span class="codelink"><a href="paramiko.hostkeys-pysrc.html">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="paramiko.HostKeys-class.html#save" class="summary-sig-name">save</a>(<span class="summary-sig-arg">self</span>, <span class="summary-sig-arg">filename</span>)</span><br /> Save host keys into a file, in the format used by openssh.</td> <td align="right" valign="top"> <span class="codelink"><a href="paramiko.hostkeys-pysrc.html">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="paramiko.HostKeys-class.html#values" class="summary-sig-name">values</a>(<span class="summary-sig-arg">self</span>)</span></td> <td align="right" valign="top"> <span class="codelink"><a href="paramiko.hostkeys-pysrc.html">source code</a></span> </td> </tr> </table> </td> </tr> <tr> <td colspan="2" class="summary"> <p class="indent-wrapped-lines"><b>Inherited from <code>UserDict.DictMixin</code></b>: <code>__cmp__</code>, <code>__contains__</code>, <code>__iter__</code>, <code>__len__</code>, <code>__repr__</code>, <code>get</code>, <code>has_key</code>, <code>items</code>, <code>iteritems</code>, <code>iterkeys</code>, <code>itervalues</code>, <code>pop</code>, <code>popitem</code>, <code>setdefault</code>, <code>update</code> </p> </td> </tr> </table> <!-- ==================== STATIC METHODS ==================== --> <a name="section-StaticMethods"></a> <table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr bgcolor="#70b0f0" class="table-header"> <td align="left" colspan="2" class="table-header"> <span class="table-header">Static Methods</span></td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type">str</span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="paramiko.HostKeys-class.html#hash_host" class="summary-sig-name">hash_host</a>(<span class="summary-sig-arg">hostname</span>, <span class="summary-sig-arg">salt</span>=<span class="summary-sig-default">None</span>)</span><br /> Return a "hashed" form of the hostname, as used by openssh when storing hashed hostnames in the known_hosts file.</td> <td align="right" valign="top"> <span class="codelink"><a href="paramiko-pysrc.html#HostKeys.hash_host">source code</a></span> </td> </tr> </table> </td> </tr> </table> <!-- ==================== METHOD DETAILS ==================== --> <a name="section-MethodDetails"></a> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr bgcolor="#70b0f0" class="table-header"> <td align="left" colspan="2" class="table-header"> <span class="table-header">Method Details</span></td> </tr> </table> <a name="__init__"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><td> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr valign="top"><td> <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>, <span class="sig-arg">filename</span>=<span class="sig-default">None</span>)</span> <br /><em class="fname">(Constructor)</em> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="paramiko.hostkeys-pysrc.html">source code</a></span> </td> </tr></table> <p>Create a new HostKeys object, optionally loading keys from an openssh style host-key file.</p> <dl class="fields"> <dt>Parameters:</dt> <dd><ul class="nomargin-top"> <li><strong class="pname"><code>filename</code></strong> (str) - filename to load host keys from, or <code>None</code></li> </ul></dd> </dl> </td></tr></table> </div> <a name="add"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><td> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr valign="top"><td> <h3 class="epydoc"><span class="sig"><span class="sig-name">add</span>(<span class="sig-arg">self</span>, <span class="sig-arg">hostname</span>, <span class="sig-arg">keytype</span>, <span class="sig-arg">key</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="paramiko.hostkeys-pysrc.html">source code</a></span> </td> </tr></table> <p>Add a host key entry to the table. Any existing entry for a <code>(hostname, keytype)</code> pair will be replaced.</p> <dl class="fields"> <dt>Parameters:</dt> <dd><ul class="nomargin-top"> <li><strong class="pname"><code>hostname</code></strong> (str) - the hostname (or IP) to add</li> <li><strong class="pname"><code>keytype</code></strong> (str) - key type (<code>"ssh-rsa"</code> or <code>"ssh-dss"</code>)</li> <li><strong class="pname"><code>key</code></strong> (<a href="paramiko.PKey-class.html" class="link">PKey</a>) - the key to add</li> </ul></dd> </dl> </td></tr></table> </div> <a name="check"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><td> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr valign="top"><td> <h3 class="epydoc"><span class="sig"><span class="sig-name">check</span>(<span class="sig-arg">self</span>, <span class="sig-arg">hostname</span>, <span class="sig-arg">key</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="paramiko.hostkeys-pysrc.html">source code</a></span> </td> </tr></table> <p>Return True if the given key is associated with the given hostname in this dictionary.</p> <dl class="fields"> <dt>Parameters:</dt> <dd><ul class="nomargin-top"> <li><strong class="pname"><code>hostname</code></strong> (str) - hostname (or IP) of the SSH server</li> <li><strong class="pname"><code>key</code></strong> (<a href="paramiko.PKey-class.html" class="link">PKey</a>) - the key to check</li> </ul></dd> <dt>Returns: bool</dt> <dd><code>True</code> if the key is associated with the hostname; <code>False</code> if not</dd> </dl> </td></tr></table> </div> <a name="clear"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><td> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr valign="top"><td> <h3 class="epydoc"><span class="sig"><span class="sig-name">clear</span>(<span class="sig-arg">self</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="paramiko.hostkeys-pysrc.html">source code</a></span> </td> </tr></table> <p>Remove all host keys from the dictionary.</p> <dl class="fields"> <dt>Overrides: UserDict.DictMixin.clear </dt> </dl> </td></tr></table> </div> <a name="hash_host"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><td> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr valign="top"><td> <h3 class="epydoc"><span class="sig"><span class="sig-name">hash_host</span>(<span class="sig-arg">hostname</span>, <span class="sig-arg">salt</span>=<span class="sig-default">None</span>)</span> <br /><em class="fname">Static Method</em> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="paramiko-pysrc.html#HostKeys.hash_host">source code</a></span> </td> </tr></table> <p>Return a "hashed" form of the hostname, as used by openssh when storing hashed hostnames in the known_hosts file.</p> <dl class="fields"> <dt>Parameters:</dt> <dd><ul class="nomargin-top"> <li><strong class="pname"><code>hostname</code></strong> (str) - the hostname to hash</li> <li><strong class="pname"><code>salt</code></strong> (str) - optional salt to use when hashing (must be 20 bytes long)</li> </ul></dd> <dt>Returns: str</dt> <dd>the hashed hostname</dd> </dl> </td></tr></table> </div> <a name="load"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><td> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr valign="top"><td> <h3 class="epydoc"><span class="sig"><span class="sig-name">load</span>(<span class="sig-arg">self</span>, <span class="sig-arg">filename</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="paramiko.hostkeys-pysrc.html">source code</a></span> </td> </tr></table> <p>Read a file of known SSH host keys, in the format used by openssh. This type of file unfortunately doesn't exist on Windows, but on posix, it will usually be stored in <code>os.path.expanduser("~/.ssh/known_hosts")</code>.</p> <p>If this method is called multiple times, the host keys are merged, not cleared. So multiple calls to <code>load</code> will just call <a href="paramiko.HostKeys-class.html#add" class="link">add</a>, replacing any existing entries and adding new ones.</p> <dl class="fields"> <dt>Parameters:</dt> <dd><ul class="nomargin-top"> <li><strong class="pname"><code>filename</code></strong> (str) - name of the file to read host keys from</li> </ul></dd> <dt>Raises:</dt> <dd><ul class="nomargin-top"> <li><code><strong class='fraise'>IOError</strong></code> - if there was an error reading the file</li> </ul></dd> </dl> </td></tr></table> </div> <a name="lookup"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><td> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr valign="top"><td> <h3 class="epydoc"><span class="sig"><span class="sig-name">lookup</span>(<span class="sig-arg">self</span>, <span class="sig-arg">hostname</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="paramiko.hostkeys-pysrc.html">source code</a></span> </td> </tr></table> <p>Find a hostkey entry for a given hostname or IP. If no entry is found, <code>None</code> is returned. Otherwise a dictionary of keytype to key is returned. The keytype will be either <code>"ssh-rsa"</code> or <code>"ssh-dss"</code>.</p> <dl class="fields"> <dt>Parameters:</dt> <dd><ul class="nomargin-top"> <li><strong class="pname"><code>hostname</code></strong> (str) - the hostname (or IP) to lookup</li> </ul></dd> <dt>Returns: dict(str, <a href="paramiko.PKey-class.html" class="link">PKey</a>)</dt> <dd>keys associated with this host (or <code>None</code>)</dd> </dl> </td></tr></table> </div> <a name="save"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><td> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr valign="top"><td> <h3 class="epydoc"><span class="sig"><span class="sig-name">save</span>(<span class="sig-arg">self</span>, <span class="sig-arg">filename</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="paramiko.hostkeys-pysrc.html">source code</a></span> </td> </tr></table> <p>Save host keys into a file, in the format used by openssh. The order of keys in the file will be preserved when possible (if these keys were loaded from a file originally). The single exception is that combined lines will be split into individual key lines, which is arguably a bug.</p> <dl class="fields"> <dt>Parameters:</dt> <dd><ul class="nomargin-top"> <li><strong class="pname"><code>filename</code></strong> (str) - name of the file to write</li> </ul></dd> <dt>Raises:</dt> <dd><ul class="nomargin-top"> <li><code><strong class='fraise'>IOError</strong></code> - if there was an error writing the file</li> </ul></dd> </dl> <div class="fields"> <p><strong>Since:</strong> 1.6.1 </p> </div></td></tr></table> </div> <a name="values"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><td> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr valign="top"><td> <h3 class="epydoc"><span class="sig"><span class="sig-name">values</span>(<span class="sig-arg">self</span>)</span> </h3> </td><td align="right" valign="top" ><span class="codelink"><a href="paramiko.hostkeys-pysrc.html">source code</a></span> </td> </tr></table> <dl class="fields"> <dt>Overrides: UserDict.DictMixin.values </dt> </dl> </td></tr></table> </div> <br /> <!-- ==================== NAVIGATION BAR ==================== --> <table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> <tr valign="middle"> <!-- Home link --> <th> <a href="paramiko-module.html">Home</a> </th> <!-- Tree link --> <th> <a href="module-tree.html">Trees</a> </th> <!-- Index link --> <th> <a href="identifier-index.html">Indices</a> </th> <!-- Help link --> <th> <a href="help.html">Help</a> </th> <th class="navbar" width="100%"></th> </tr> </table> <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> Generated by Epydoc 3.0.1 on Sun Jul 6 18:30:28 2008 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" >http://epydoc.sourceforge.net</a> </td> </tr> </table> <script type="text/javascript"> <!-- // Private objects are initially displayed (because if // javascript is turned off then we want them to be // visible); but by default, we want to hide them. So hide // them unless we have a cookie that says to show them. checkCookie(); // --> </script> </body> </html>