[Bug] Need to better handle erorr when pubkey auth fails but password auth is enabled
Opened this issue · 0 comments
a-dubs commented
The following happened to me on Oracle Cloud when using an existing instance with no ~/.ssh/authorized_keys
BUT password authentication enabled:
Traceback (most recent call last):
File "/home/a-dubs/work/pycloudlib/pycloudlib/instance.py", line 441, in _ssh_connect
client.connect(
File "/home/a-dubs/.virtualenvs/pycloudlib-lvxe/lib/python3.10/site-packages/paramiko/client.py", line 485, in connect
self._auth(
File "/home/a-dubs/.virtualenvs/pycloudlib-lvxe/lib/python3.10/site-packages/paramiko/client.py", line 818, in _auth
raise saved_exception
File "/home/a-dubs/.virtualenvs/pycloudlib-lvxe/lib/python3.10/site-packages/paramiko/client.py", line 788, in _auth
key = self._key_from_filepath(
File "/home/a-dubs/.virtualenvs/pycloudlib-lvxe/lib/python3.10/site-packages/paramiko/client.py", line 638, in _key_from_filepath
key = klass.from_private_key_file(key_path, password)
File "/home/a-dubs/.virtualenvs/pycloudlib-lvxe/lib/python3.10/site-packages/paramiko/pkey.py", line 421, in from_private_key_file
key = cls(filename=filename, password=password)
File "/home/a-dubs/.virtualenvs/pycloudlib-lvxe/lib/python3.10/site-packages/paramiko/ed25519key.py", line 65, in __init__
signing_key = self._parse_signing_key_data(data, password)
File "/home/a-dubs/.virtualenvs/pycloudlib-lvxe/lib/python3.10/site-packages/paramiko/ed25519key.py", line 114, in _parse_signing_key_data
raise SSHException("Invalid key")
paramiko.ssh_exception.SSHException: Invalid key
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/a-dubs/work/pycloudlib/oracle-ipv6-automation.py", line 182, in <module>
create_ipv6_snapshot_with_custom_cloud_init_code(
File "/home/a-dubs/work/pycloudlib/oracle-ipv6-automation.py", line 87, in create_ipv6_snapshot_with_custom_cloud_init_code
print(instance.execute("hostname"))
File "/home/a-dubs/work/pycloudlib/pycloudlib/instance.py", line 276, in execute
return self._run_command(command, stdin, **kwargs)
File "/home/a-dubs/work/pycloudlib/pycloudlib/instance.py", line 233, in _run_command
return self._ssh(list(command), stdin=stdin)
File "/home/a-dubs/work/pycloudlib/pycloudlib/instance.py", line 391, in _ssh
client = self._ssh_connect()
File "/home/a-dubs/work/pycloudlib/pycloudlib/instance.py", line 457, in _ssh_connect
raise SSHException from e
paramiko.ssh_exception.SSHException
This output is incredibly unhelpful and should definitely be intercepted better and a proper error message be displayed.
Adding my ssh key to the ~/.ssh/authorized_keys
on the instance and then re-running my script made this issue go away.