-
-
Notifications
You must be signed in to change notification settings - Fork 443
Open
Description
Describe the bug
Connecting via SSH no longer works with python-paramiko 4.0.0-1 installed as the devs seemingly removed support for DSSKey resulting in this error message:
ImportError: cannot import name 'DSSKey' from 'paramiko' (/usr/lib/python3.13/site-packages/paramiko/init.py). Did you mean: 'RSAKey'?
Removing DSSKey from src/pyinfra/connectors/ssh_util.py fixes the issues and SSH connection is working again.
See https://www.paramiko.org/changelog.html -> 4.0.0
To Reproduce
Install paramiko 4.0.0 and try to use SSH.
Expected behavior
SSH should work. :-)
Meta
output of pyinfra --support
System: Linux
Platform: Linux-6.17.5-arch1-1-x86_64-with-glibc2.42
Release: 6.17.5-arch1-1
Machine: x86_64
pyinfra: v3.5.2
click: v8.2.1
distro: v1.9.0
gevent: v25.9.1
jinja2: v3.1.6
packaging: v25.0
paramiko: v4.0.0
python-dateutil: v2.9.0
typeguard: v4.4.4
typing-extensions: v4.15.0
Executable: /usr/bin/pyinfra
Python: 3.13.7 (CPython, GCC 15.2.1 20250813)
Installed via yay from Arch's AUR
pyinfra-debug.log
File "/usr/lib/python3.13/site-packages/pyinfra_cli/cli.py", line 243, in cli
_main(*args, **kwargs)
~~~~~^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.13/site-packages/pyinfra_cli/cli.py", line 353, in _main
inventory = make_inventory(
inventory,
...<2 lines>...
group_data_directories=group_data,
)
File "/usr/lib/python3.13/site-packages/pyinfra_cli/inventory.py", line 173, in make_inventory
return make_inventory_from_files(inventory, override_data, cwd, group_data_directories)
File "/usr/lib/python3.13/site-packages/pyinfra_cli/inventory.py", line 304, in make_inventory_from_files
fake_inventory = Inventory((all_hosts, all_data), **fake_groups)
File "/usr/lib/python3.13/site-packages/pyinfra/api/inventory.py", line 58, in __init__
self.make_hosts_and_groups(names, groups)
~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^
File "/usr/lib/python3.13/site-packages/pyinfra/api/inventory.py", line 61, in make_hosts_and_groups
all_connectors = get_all_connectors()
File "/usr/lib/python3.13/site-packages/pyinfra/api/connectors.py", line 13, in get_all_connectors
entrypoint.name: _load_connector(entrypoint)
~~~~~~~~~~~~~~~^^^^^^^^^^^^
File "/usr/lib/python3.13/site-packages/pyinfra/api/connectors.py", line 8, in _load_connector
return entrypoint.load()
~~~~~~~~~~~~~~~^^
File "/usr/lib/python3.13/importlib/metadata/__init__.py", line 179, in load
module = import_module(match.group('module'))
File "/usr/lib/python3.13/importlib/__init__.py", line 88, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 1026, in exec_module
File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
File "/usr/lib/python3.13/site-packages/pyinfra/connectors/dockerssh.py", line 15, in <module>
from .ssh import SSHConnector
File "/usr/lib/python3.13/site-packages/pyinfra/connectors/ssh.py", line 21, in <module>
from .ssh_util import get_private_key, raise_connect_error
File "/usr/lib/python3.13/site-packages/pyinfra/connectors/ssh_util.py", line 5, in <module>
from paramiko import (
...<7 lines>...
)
ImportError: cannot import name 'DSSKey' from 'paramiko' (/usr/lib/python3.13/site-packages/paramiko/__init__.py). Did you mean: 'RSAKey'?
Metadata
Metadata
Assignees
Labels
No labels