title: Robot Framework - SSH Library - Login With Public Key
body: <p>I am trying to create a SSH connection with the Private Key from <strong>Robot Framework with SSH library</strong> to the machine which is hosted on AWS cloud. The keyword being used is - <strong>Login With Public Key</strong>.
  Below is the code which is currently written in Eclipse with Red editor</p>
  <pre><code>*** Variables ***
  ${hostname}    &lt;hostname&gt;
  ${username}    &lt;username&gt;
  
  
  *** Test Cases ***
  ConnectionToJump
      Set Log Level    DEBUG
      Enable Ssh Logging    logfile.txt
      Log    Starting the connection to jump server
      ${connectionIndex}    Open Connection    ${hostname}    port=22
      ${output}    Login With Public Key    ${username}    C:/Users/&lt;username&gt;/.ssh/id_rsa.ppk
      Log    ${output}
  </code></pre>
  <p>But unfortunately, this is throwing me error in the Eclipse console which looks like</p>
  <pre><code>Starting test: Demo-Telemetry.TestCases.ConnectToJumpServer.ConnectionToJump
  20210616 12:52:54.448 : INFO : Log level changed from INFO to DEBUG.
  20210616 12:52:54.449 : INFO : SSH log is written to &lt;a href=&quot;logfile.txt&quot;&gt;file&lt;/a&gt;.
  20210616 12:52:54.449 : INFO : Starting the connection to jump server
  20210616 12:52:54.450 : INFO : ${connectionIndex} = 1
  20210616 12:52:54.451 : INFO : Logging into '&lt;hostname&gt;:22' as '&lt;username&gt;'.
  20210616 12:52:54.643 : DEBUG : Adding ecdsa-sha2-nistp256 host key for &lt;hostname&gt;: b'db779d1ed1b0995ec97b1cbe96c27c5f'
  20210616 12:52:54.888 : FAIL : Login with public key failed for user '&lt;username&gt;'.
  20210616 12:52:54.888 : DEBUG : Traceback (most recent call last):
    File &quot;D:\Program Files (x86)\Python\Python39\Lib\site-packages\SSHLibrary\library.py&quot;, line 1043, in login_with_public_key
      return self._login(self.current.login_with_public_key, username,
    File &quot;D:\Program Files (x86)\Python\Python39\Lib\site-packages\SSHLibrary\library.py&quot;, line 1059, in _login
      raise RuntimeError(e)
  Ending test: Demo-Telemetry.TestCases.ConnectToJumpServer.ConnectionToJump
  </code></pre>
  <p>On checking the SSH log from the logfile.txt, the information is as follows</p>
  <pre><code>DEB [20210616-12:52:54.532] thr=1   paramiko.transport: starting thread (client mode): 0xfdaa1340
  DEB [20210616-12:52:54.533] thr=1   paramiko.transport: Local version/idstring: SSH-2.0-paramiko_2.7.2
  DEB [20210616-12:52:54.558] thr=1   paramiko.transport: Remote version/idstring: SSH-2.0-OpenSSH_7.4
  INF [20210616-12:52:54.558] thr=1   paramiko.transport: Connected (version 2.0, client OpenSSH_7.4)
  DEB [20210616-12:52:54.607] thr=1   paramiko.transport: kex algos:['diffie-hellman-group-exchange-sha256', 'diffie-hellman-group14-sha256', 'diffie-hellman-group16-sha512', 'ecdh-sha2-nistp256', 'ecdh-sha2-nistp384', 'ecdh-sha2-nistp521'] server key:['ssh-rsa', 'rsa-sha2-512', 'rsa-sha2-256', 'ecdsa-sha2-nistp256', 'ssh-dss'] client encrypt:['aes256-gcm@openssh.com', 'aes128-gcm@openssh.com', 'aes128-cbc', 'aes192-cbc', 'aes256-cbc', 'aes128-ctr', 'aes192-ctr', 'aes256-ctr'] server encrypt:['aes256-gcm@openssh.com', 'aes128-gcm@openssh.com', 'aes128-cbc', 'aes192-cbc', 'aes256-cbc', 'aes128-ctr', 'aes192-ctr', 'aes256-ctr'] client mac:['hmac-sha2-512-etm@openssh.com', 'hmac-sha2-256-etm@openssh.com', 'hmac-sha2-512', 'hmac-sha2-256'] server mac:['hmac-sha2-512-etm@openssh.com', 'hmac-sha2-256-etm@openssh.com', 'hmac-sha2-512', 'hmac-sha2-256'] client compress:['none', 'zlib@openssh.com'] server compress:['none', 'zlib@openssh.com'] client lang:[''] server lang:[''] kex follows?False
  DEB [20210616-12:52:54.607] thr=1   paramiko.transport: Kex agreed: ecdh-sha2-nistp256
  DEB [20210616-12:52:54.607] thr=1   paramiko.transport: HostKey agreed: ecdsa-sha2-nistp256
  DEB [20210616-12:52:54.607] thr=1   paramiko.transport: Cipher agreed: aes128-ctr
  DEB [20210616-12:52:54.608] thr=1   paramiko.transport: MAC agreed: hmac-sha2-256
  DEB [20210616-12:52:54.608] thr=1   paramiko.transport: Compression agreed: none
  DEB [20210616-12:52:54.642] thr=1   paramiko.transport: kex engine KexNistp256 specified hash_algo &lt;built-in function openssl_sha256&gt;
  DEB [20210616-12:52:54.642] thr=1   paramiko.transport: Switch to new keys ...
  DEB [20210616-12:52:54.643] thr=2   paramiko.transport: Adding ecdsa-sha2-nistp256 host key for sshhost.fftest.tst.zipbo.mop-test.comp.db.de: b'db779d1ed1b0995ec97b1cbe96c27c5f'
  DEB [20210616-12:52:54.747] thr=1   paramiko.transport: userauth is OK
  DEB [20210616-12:52:54.782] thr=1   paramiko.transport: Authentication type (password) not permitted.
  DEB [20210616-12:52:54.783] thr=1   paramiko.transport: Allowed methods: ['publickey']
  DEB [20210616-12:52:54.815] thr=1   paramiko.transport: userauth is OK
  DEB [20210616-12:52:54.857] thr=1   paramiko.transport: Authentication type (none) not permitted.
  DEB [20210616-12:52:54.857] thr=1   paramiko.transport: Allowed methods: ['publickey']
  DEB [20210616-12:52:54.884] thr=1   paramiko.transport: userauth is OK
  ERR [20210616-12:52:54.884] thr=1   paramiko.transport: Unknown exception: 'NoneType' object has no attribute 'public_blob'
  ERR [20210616-12:52:54.886] thr=1   paramiko.transport: Traceback (most recent call last):
  ERR [20210616-12:52:54.886] thr=1   paramiko.transport:   File &quot;D:\Program Files (x86)\Python\Python39\Lib\site-packages\paramiko\transport.py&quot;, line 2109, in run
  ERR [20210616-12:52:54.886] thr=1   paramiko.transport:     handler(self.auth_handler, m)
  ERR [20210616-12:52:54.886] thr=1   paramiko.transport:   File &quot;D:\Program Files (x86)\Python\Python39\Lib\site-packages\paramiko\auth_handler.py&quot;, line 289, in _parse_service_accept
  ERR [20210616-12:52:54.886] thr=1   paramiko.transport:     if self.private_key.public_blob:
  ERR [20210616-12:52:54.886] thr=1   paramiko.transport: AttributeError: 'NoneType' object has no attribute 'public_blob'
  </code></pre>
  <p>I am able to create the connection manually with PuTTY and MobaXterm with the same key file successfully.</p>
  <p>Can you please help me to understand what mistake i am doing or what needs to be altered to make a successful connection .</p>
  <p>Thanks</p>