Subject: Bug#1586: pyhoca-cli does not honor the -k (--ssh-privkey) option

From: Eric Monson <[email-masked]>
Date: Thu, 14 Apr 2022 18:16:35 -0600

Package: pyhoca-cli
Version: 0.4.0.3

I've created a session and defined a private key (not at the location
~/.ssh/id_rsa). In the command line, I run "pyhocal-cli -k <private_key>
...".  However, pyhoca-cli still attempts to use ~/.ssh/id_rsa.

Here's what I believe happens:
x2go/defaults.py: autologin is defaulted to True
x2go/utils.py: autologin is translated to 'look_for_keys', so look_for_keys
is now set to True
x2go/backends/control/plain.py (in the function connect): We hit is
following if statement:
  if look_for_keys:
    key_filename = None
    pkey = None
(so key_filename and pkey are cleared)

Finally in backends/control/plain.py, we hit the if statement that calls
one of 3 paramiko connect calls. However, since key_filename and pkey are
set to None, but look_for_keys is set to true, the software ends up trying
to use the ~/.ssh/id_rsa file, if that doesn't work, it will then ask for a
password, but never uses the passed in private key.

If you comment out the if statement in "plain.py":
  if look_for_keys:
    key_filename = None
    pkey = None

then the software does in fact use the private key passed in at the command
line. I don't know why that if statement is there. I'm sure there is a
reason, but don't know the codebase well enough to say that would be a
global fix.