Skip to content

sshtunnel: remove DSA support - #301

Closed
mweinelt wants to merge 1 commit into
pahaz:masterfrom
mweinelt:yank-dsa-support
Closed

mweinelt wants to merge 1 commit into
pahaz:masterfrom
mweinelt:yank-dsa-support

Conversation

@mweinelt

Copy link
Copy Markdown
Contributor

The support for DSA keys was removed[1] in Paramiko 4.0.

[1] https://www.paramiko.org/changelog.html#4.0.0

Alternative to #300 that also takes care of tests and the documentation.

The support for DSA keys was removed[1] in Paramiko 4.0.

[1] https://www.paramiko.org/changelog.html#4.0.0
@bogdanovvp

Copy link
Copy Markdown

@pahaz this fix is reasonably ugrent as all new installs of sshtunnel stop working out of the box

JiaWeiXie pushed a commit to JiaWeiXie/sshtunnel that referenced this pull request Nov 18, 2025
This commit removes support for the deprecated DSA (DSS) key algorithm,
which was removed in paramiko 3.0. DSS has been obsolete and insecure
for over a decade and was removed from OpenSSH.

Changes made:
- Updated paramiko dependency from >=2.7.2 to >=3.0.0 in setup.py
- Removed paramiko.DSSKey references from sshtunnel.py:
  * Removed 'dsa': paramiko.DSSKey from paramiko_key_types dict
  * Removed paramiko.DSSKey from key_types tuple
- Updated documentation to reflect RSA/ECDSA support only:
  * Updated docstrings in sshtunnel.py
  * Updated CLI help text
  * Updated README.rst
  * Updated CLAUDE.md to mention Ed25519 support
- Removed SSH_DSS test constant from tests/test_forwarder.py
- Removed 'ssh-dss' from FINGERPRINTS test dict
- Updated all test assertions to use SSH_RSA instead of SSH_DSS

All existing tests pass with paramiko 4.0.0.

Fixes: pahaz#299 (module 'paramiko' has no attribute 'DSSKey')
Based on community proposals: pahaz#300, pahaz#301, pahaz#304

Tested with:
- paramiko 4.0.0 (latest)
- All argument parsing tests pass
- All key-related tests pass
pahaz added a commit that referenced this pull request Oct 8, 2026
paramiko 4.0 removed DSSKey, so referencing it unconditionally raised
AttributeError in get_keys() and read_private_key_file(). Use DSSKey only
when paramiko provides it, as is already done for Ed25519Key, and drop the
paramiko<4 upper bound.

Based on #300 and #301.

Co-authored-by: lglines <207626117+lglines@users.noreply.github.com>
Co-authored-by: mweinelt <131599+mweinelt@users.noreply.github.com>

pahaz commented Oct 10, 2026 •

Copy link
Copy Markdown
Owner

Thanks @mweinelt! The problem is now fixed by #319 (released in 0.5.1), which guards DSSKey usage instead of removing DSA support, so older paramiko versions keep working. You are credited in CONTRIBUTORS and as a co-author. Closing as superseded.

@pahaz pahaz closed this Oct 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants