Skip to content

DSSKey no longer supported by paramiko 4.0.0 #1493

@cels

Description

@cels

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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions