Skip to content

remove DSSKey, which is no longer supported by paramiko#300

Open
lglines wants to merge 1 commit intopahaz:masterfrom
lglines:remove-dsskey
Open

remove DSSKey, which is no longer supported by paramiko#300
lglines wants to merge 1 commit intopahaz:masterfrom
lglines:remove-dsskey

Conversation

@lglines
Copy link

@lglines lglines commented Aug 4, 2025

This PR resolves #299 by removing support for paramiko.DSSKey since it is no longer supported by Paramiko:

[Support] paramiko/paramiko#973: Removed support for the DSA (aka DSS) key algorithm, as it has been badly outdated and insecure for a decade or more at this point, and was recently completely removed from OpenSSH as well.
If you were still using DSA out of sheer inertia: we strongly recommend upgrading to Ed25519 (or maybe ECDSA).

helperbot-recidiviz pushed a commit to Recidiviz/pulse-data that referenced this pull request Aug 26, 2025
…ta#46132)

## Description of the change

NE raw data export job is failing with
```
2025-08-08 00:01:47.350 PDT
File "/app/.venv/lib/python3.11/site-packages/sshtunnel.py", line 1093, in get_keys
2025-08-08 00:01:47.350 PDT
'dsa': paramiko.DSSKey,
2025-08-08 00:01:47.350 PDT
^^^^^^^^^^^^^^^
2025-08-08 00:01:47.486 PDT
Container called exit(1).
2025-08-08 00:01:47.487 PDT
AttributeError: module 'paramiko' has no attribute 'DSSKey'. Did you mean: 'RSAKey'?
```
paramiko's latest [release](https://www.paramiko.org/changelog.html)
deprecated `DSSKey`. someone is working on fixing it in
[sshtunnel](pahaz/sshtunnel#300) so we can pin
to previous paramiko version until that's fixed

## Type of change

> All pull requests must have at least one of the following labels
applied (otherwise the PR will fail):

| Label | Description |
|-----------------------------
|-----------------------------------------------------------------------------------------------------------
|
| Type: Bug | non-breaking change that fixes an issue |
| Type: Feature | non-breaking change that adds functionality |
| Type: Breaking Change | fix or feature that would cause existing
functionality to not work as expected |
| Type: Non-breaking refactor | change addresses some tech debt item or
prepares for a later change, but does not change functionality |
| Type: Configuration Change | adjusts configuration to achieve some end
related to functionality, development, performance, or security |
| Type: Dependency Upgrade | upgrades a project dependency - these
changes are not included in release notes |

## Related issues

Recidiviz/recidiviz-data#46131

## Checklists

### Development

**This box MUST be checked by the submitter prior to merging**:
- [ ] **Double- and triple-checked that there is no Personally
Identifiable Information (PII) being mistakenly added in this pull
request**

These boxes should be checked by the submitter prior to merging:
- [ ] Tests have been written to cover the code changed/added as part of
this pull request

### Code review

These boxes should be checked by reviewers prior to merging:

- [ ] This pull request has a descriptive title and information useful
to a reviewer
- [ ] Potential security implications or infrastructural changes have
been considered, if relevant

GitOrigin-RevId: eaf192c7cf3e469dcf82f37ec66d7f8eb5f44690
@modernpacifist
Copy link

Very cool, works

@yuval-lb
Copy link

yuval-lb commented Sep 9, 2025

important fix, +1 for merge

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
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.

Remove support for DSA (aka DSS) key algorithm

5 participants