<spanid="evennia-server-portal-ssh"></span><h1>evennia.server.portal.ssh<aclass="headerlink"href="#module-evennia.server.portal.ssh"title="Permalink to this headline">¶</a></h1>
<p>This module implements the ssh (Secure SHell) protocol for encrypted
connections.</p>
<p>This depends on a generic session module that implements the actual
login procedure of the game, tracks sessions etc.</p>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.server.portal.ssh.</code><codeclass="sig-name descname">SSHServerFactory</code><aclass="reference internal"href="../_modules/evennia/server/portal/ssh.html#SSHServerFactory"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.ssh.SSHServerFactory"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">noisy</code><emclass="property"> = False</em><aclass="headerlink"href="#evennia.server.portal.ssh.SSHServerFactory.noisy"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">logPrefix</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/ssh.html#SSHServerFactory.logPrefix"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.ssh.SSHServerFactory.logPrefix"title="Permalink to this definition">¶</a></dt>
<dd><p>Describe this factory for log messages.</p>
</dd></dl>
</dd></dl>
<dlclass="py class">
<dtid="evennia.server.portal.ssh.SshProtocol">
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.server.portal.ssh.</code><codeclass="sig-name descname">SshProtocol</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">starttuple</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/ssh.html#SshProtocol"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.ssh.SshProtocol"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">noisy</code><emclass="property"> = False</em><aclass="headerlink"href="#evennia.server.portal.ssh.SshProtocol.noisy"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">__init__</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">starttuple</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/ssh.html#SshProtocol.__init__"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.ssh.SshProtocol.__init__"title="Permalink to this definition">¶</a></dt>
<dd><p>For setting up the account. If account is not None then we’ll
login automatically.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>starttuple</strong> (<em>tuple</em>) – A (account, factory) tuple.</p>
<codeclass="sig-name descname">terminalSize</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">width</span></em>, <emclass="sig-param"><spanclass="n">height</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/ssh.html#SshProtocol.terminalSize"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.ssh.SshProtocol.terminalSize"title="Permalink to this definition">¶</a></dt>
<dd><p>Initialize the terminal and connect to the new session.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><ulclass="simple">
<li><p><strong>width</strong> (<em>int</em>) – Width of terminal.</p></li>
<li><p><strong>height</strong> (<em>int</em>) – Height of terminal.</p></li>
<codeclass="sig-name descname">connectionMade</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/ssh.html#SshProtocol.connectionMade"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.ssh.SshProtocol.connectionMade"title="Permalink to this definition">¶</a></dt>
<dd><p>This is called when the connection is first established.</p>
<codeclass="sig-name descname">handle_INT</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/ssh.html#SshProtocol.handle_INT"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.ssh.SshProtocol.handle_INT"title="Permalink to this definition">¶</a></dt>
<dd><p>Handle ^C as an interrupt keystroke by resetting the current
<codeclass="sig-name descname">handle_EOF</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/ssh.html#SshProtocol.handle_EOF"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.ssh.SshProtocol.handle_EOF"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">handle_FF</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/ssh.html#SshProtocol.handle_FF"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.ssh.SshProtocol.handle_FF"title="Permalink to this definition">¶</a></dt>
<dd><p>Handle a ‘form feed’ byte - generally used to request a screen
<codeclass="sig-name descname">handle_QUIT</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/ssh.html#SshProtocol.handle_QUIT"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.ssh.SshProtocol.handle_QUIT"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">connectionLost</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">reason</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/ssh.html#SshProtocol.connectionLost"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.ssh.SshProtocol.connectionLost"title="Permalink to this definition">¶</a></dt>
<dd><p>This is executed when the connection is lost for whatever
reason. It can also be called directly, from the disconnect
method.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>reason</strong> (<em>str</em>) – Motivation for loosing connection.</p>
<codeclass="sig-name descname">getClientAddress</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/ssh.html#SshProtocol.getClientAddress"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.ssh.SshProtocol.getClientAddress"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">lineReceived</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">string</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/ssh.html#SshProtocol.lineReceived"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.ssh.SshProtocol.lineReceived"title="Permalink to this definition">¶</a></dt>
<dd><p>Communication User -> Evennia. Any line return indicates a
command for the purpose of the MUD. So we take the user input
<codeclass="sig-name descname">sendLine</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">string</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/ssh.html#SshProtocol.sendLine"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.ssh.SshProtocol.sendLine"title="Permalink to this definition">¶</a></dt>
<dd><p>Communication Evennia -> User. Any string sent should
already have been properly formatted and processed before
<codeclass="sig-name descname">at_login</code><spanclass="sig-paren">(</span><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/ssh.html#SshProtocol.at_login"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.ssh.SshProtocol.at_login"title="Permalink to this definition">¶</a></dt>
<dd><p>Called when this session gets authenticated by the server.</p>
<codeclass="sig-name descname">disconnect</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">reason</span><spanclass="o">=</span><spanclass="default_value">'Connection closed. Goodbye for now.'</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/ssh.html#SshProtocol.disconnect"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.ssh.SshProtocol.disconnect"title="Permalink to this definition">¶</a></dt>
<dd><p>Disconnect from server.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>reason</strong> (<em>str</em>) – Motivation for disconnect.</p>
<codeclass="sig-name descname">data_out</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/ssh.html#SshProtocol.data_out"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.ssh.SshProtocol.data_out"title="Permalink to this definition">¶</a></dt>
<dd><p>Data Evennia -> User</p>
<dlclass="field-list simple">
<dtclass="field-odd">Keyword Arguments</dt>
<ddclass="field-odd"><p><strong>kwargs</strong> (<em>any</em>) – Options to the protocol.</p>
<codeclass="sig-name descname">send_text</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/ssh.html#SshProtocol.send_text"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.ssh.SshProtocol.send_text"title="Permalink to this definition">¶</a></dt>
<dd><p>Send text data. This is an in-band telnet operation.</p>
<dlclass="field-list simple">
<dtclass="field-odd">Parameters</dt>
<ddclass="field-odd"><p><strong>text</strong> (<em>str</em>) – The first argument is always the text string to send. No other arguments
<codeclass="sig-name descname">send_prompt</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/ssh.html#SshProtocol.send_prompt"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.ssh.SshProtocol.send_prompt"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">send_default</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="o">*</span><spanclass="n">args</span></em>, <emclass="sig-param"><spanclass="o">**</span><spanclass="n">kwargs</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/ssh.html#SshProtocol.send_default"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.ssh.SshProtocol.send_default"title="Permalink to this definition">¶</a></dt>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.server.portal.ssh.</code><codeclass="sig-name descname">ExtraInfoAuthServer</code><aclass="reference internal"href="../_modules/evennia/server/portal/ssh.html#ExtraInfoAuthServer"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.ssh.ExtraInfoAuthServer"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">noisy</code><emclass="property"> = False</em><aclass="headerlink"href="#evennia.server.portal.ssh.ExtraInfoAuthServer.noisy"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">auth_password</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">packet</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/ssh.html#ExtraInfoAuthServer.auth_password"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.ssh.ExtraInfoAuthServer.auth_password"title="Permalink to this definition">¶</a></dt>
<dd><p>Password authentication.</p>
<p>Used mostly for setting up the transport so we can query
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.server.portal.ssh.</code><codeclass="sig-name descname">AccountDBPasswordChecker</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">factory</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/ssh.html#AccountDBPasswordChecker"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.ssh.AccountDBPasswordChecker"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">noisy</code><emclass="property"> = False</em><aclass="headerlink"href="#evennia.server.portal.ssh.AccountDBPasswordChecker.noisy"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">credentialInterfaces</code><emclass="property"> = (<InterfaceClass twisted.cred.credentials.IUsernamePassword>,)</em><aclass="headerlink"href="#evennia.server.portal.ssh.AccountDBPasswordChecker.credentialInterfaces"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">__init__</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">factory</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/ssh.html#AccountDBPasswordChecker.__init__"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.ssh.AccountDBPasswordChecker.__init__"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">requestAvatarId</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">c</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/ssh.html#AccountDBPasswordChecker.requestAvatarId"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.ssh.AccountDBPasswordChecker.requestAvatarId"title="Permalink to this definition">¶</a></dt>
<emclass="property">class </em><codeclass="sig-prename descclassname">evennia.server.portal.ssh.</code><codeclass="sig-name descname">PassAvatarIdTerminalRealm</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">transportFactory</span><spanclass="o">=</span><spanclass="default_value">None</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/ssh.html#PassAvatarIdTerminalRealm"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.ssh.PassAvatarIdTerminalRealm"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">noisy</code><emclass="property"> = False</em><aclass="headerlink"href="#evennia.server.portal.ssh.PassAvatarIdTerminalRealm.noisy"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">noisy</code><emclass="property"> = False</em><aclass="headerlink"href="#evennia.server.portal.ssh.TerminalSessionTransport_getPeer.noisy"title="Permalink to this definition">¶</a></dt>
<codeclass="sig-name descname">__init__</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">proto</span></em>, <emclass="sig-param"><spanclass="n">chainedProtocol</span></em>, <emclass="sig-param"><spanclass="n">avatar</span></em>, <emclass="sig-param"><spanclass="n">width</span></em>, <emclass="sig-param"><spanclass="n">height</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/ssh.html#TerminalSessionTransport_getPeer.__init__"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.ssh.TerminalSessionTransport_getPeer.__init__"title="Permalink to this definition">¶</a></dt>
<dd><p>Initialize self. See help(type(self)) for accurate signature.</p>
</dd></dl>
</dd></dl>
<dlclass="py function">
<dtid="evennia.server.portal.ssh.getKeyPair">
<codeclass="sig-prename descclassname">evennia.server.portal.ssh.</code><codeclass="sig-name descname">getKeyPair</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">pubkeyfile</span></em>, <emclass="sig-param"><spanclass="n">privkeyfile</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/ssh.html#getKeyPair"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.ssh.getKeyPair"title="Permalink to this definition">¶</a></dt>
<dd><p>This function looks for RSA keypair files in the current directory. If they
do not exist, the keypair is created.</p>
</dd></dl>
<dlclass="py function">
<dtid="evennia.server.portal.ssh.makeFactory">
<codeclass="sig-prename descclassname">evennia.server.portal.ssh.</code><codeclass="sig-name descname">makeFactory</code><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n">configdict</span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../_modules/evennia/server/portal/ssh.html#makeFactory"><spanclass="viewcode-link">[source]</span></a><aclass="headerlink"href="#evennia.server.portal.ssh.makeFactory"title="Permalink to this definition">¶</a></dt>