From 15ad26693d85377b26d946f5c1a7b568c6665dab Mon Sep 17 00:00:00 2001 From: Michael Kuehl Date: Fri, 12 Dec 2025 10:19:58 +0100 Subject: [PATCH] upgraded paramiko. newer version of paramiko removed support for DSSKey (DSS/DSA keys) because they're deprecated for security reasons --- .../jumpstarter_driver_ssh_mitm/driver.py | 3 +-- .../jumpstarter_driver_ssh_mitm/driver_test.py | 4 ---- packages/jumpstarter-driver-ssh-mitm/pyproject.toml | 2 +- uv.lock | 9 +++++---- 4 files changed, 7 insertions(+), 11 deletions(-) diff --git a/packages/jumpstarter-driver-ssh-mitm/jumpstarter_driver_ssh_mitm/driver.py b/packages/jumpstarter-driver-ssh-mitm/jumpstarter_driver_ssh_mitm/driver.py index 139ba9c4e..c9a7cc53a 100644 --- a/packages/jumpstarter-driver-ssh-mitm/jumpstarter_driver_ssh_mitm/driver.py +++ b/packages/jumpstarter-driver-ssh-mitm/jumpstarter_driver_ssh_mitm/driver.py @@ -257,14 +257,13 @@ def _get_target_connection(self) -> tuple[str, int]: return tcp_driver.host, tcp_driver.port or 22 def _load_private_key(self, key_data: str) -> paramiko.PKey: - """Load private key, auto-detecting type (Ed25519, RSA, ECDSA, DSS).""" + """Load private key, auto-detecting type (Ed25519, RSA, ECDSA).""" key_file = io.StringIO(key_data) key_classes = [ paramiko.Ed25519Key, paramiko.RSAKey, paramiko.ECDSAKey, - paramiko.DSSKey, ] for key_class in key_classes: diff --git a/packages/jumpstarter-driver-ssh-mitm/jumpstarter_driver_ssh_mitm/driver_test.py b/packages/jumpstarter-driver-ssh-mitm/jumpstarter_driver_ssh_mitm/driver_test.py index 4b42c62f3..a1aa0dea4 100644 --- a/packages/jumpstarter-driver-ssh-mitm/jumpstarter_driver_ssh_mitm/driver_test.py +++ b/packages/jumpstarter-driver-ssh-mitm/jumpstarter_driver_ssh_mitm/driver_test.py @@ -217,10 +217,6 @@ def test_unsupported_key_type(self): "jumpstarter_driver_ssh_mitm.driver.paramiko.ECDSAKey.from_private_key", side_effect=paramiko.SSHException("Not ECDSA"), ), - patch( - "jumpstarter_driver_ssh_mitm.driver.paramiko.DSSKey.from_private_key", - side_effect=paramiko.SSHException("Not DSS"), - ), ): instance = SSHMITM( children={"tcp": TcpNetwork(host="127.0.0.1", port=22)}, diff --git a/packages/jumpstarter-driver-ssh-mitm/pyproject.toml b/packages/jumpstarter-driver-ssh-mitm/pyproject.toml index 8d08d24a3..9d24fd79b 100644 --- a/packages/jumpstarter-driver-ssh-mitm/pyproject.toml +++ b/packages/jumpstarter-driver-ssh-mitm/pyproject.toml @@ -12,7 +12,7 @@ dependencies = [ "anyio>=4.10.0", "jumpstarter", "jumpstarter-driver-network", - "paramiko>=3.0.0", + "paramiko>=3.6.0", ] [project.entry-points."jumpstarter.drivers"] diff --git a/uv.lock b/uv.lock index 99fa450fa..b187f3cd4 100644 --- a/uv.lock +++ b/uv.lock @@ -2163,7 +2163,7 @@ requires-dist = [ { name = "anyio", specifier = ">=4.10.0" }, { name = "jumpstarter", editable = "packages/jumpstarter" }, { name = "jumpstarter-driver-network", editable = "packages/jumpstarter-driver-network" }, - { name = "paramiko", specifier = ">=3.0.0" }, + { name = "paramiko", specifier = ">=3.6.0" }, ] [package.metadata.requires-dev] @@ -2927,16 +2927,17 @@ wheels = [ [[package]] name = "paramiko" -version = "3.5.1" +version = "4.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "bcrypt" }, { name = "cryptography" }, + { name = "invoke" }, { name = "pynacl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7d/15/ad6ce226e8138315f2451c2aeea985bf35ee910afb477bae7477dc3a8f3b/paramiko-3.5.1.tar.gz", hash = "sha256:b2c665bc45b2b215bd7d7f039901b14b067da00f3a11e6640995fd58f2664822", size = 1566110, upload-time = "2025-02-04T02:37:59.783Z" } +sdist = { url = "https://files.pythonhosted.org/packages/1f/e7/81fdcbc7f190cdb058cffc9431587eb289833bdd633e2002455ca9bb13d4/paramiko-4.0.0.tar.gz", hash = "sha256:6a25f07b380cc9c9a88d2b920ad37167ac4667f8d9886ccebd8f90f654b5d69f", size = 1630743, upload-time = "2025-08-04T01:02:03.711Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/15/f8/c7bd0ef12954a81a1d3cea60a13946bd9a49a0036a5927770c461eade7ae/paramiko-3.5.1-py3-none-any.whl", hash = "sha256:43b9a0501fc2b5e70680388d9346cf252cfb7d00b0667c39e80eb43a408b8f61", size = 227298, upload-time = "2025-02-04T02:37:57.672Z" }, + { url = "https://files.pythonhosted.org/packages/a9/90/a744336f5af32c433bd09af7854599682a383b37cfd78f7de263de6ad6cb/paramiko-4.0.0-py3-none-any.whl", hash = "sha256:0e20e00ac666503bf0b4eda3b6d833465a2b7aff2e2b3d79a8bba5ef144ee3b9", size = 223932, upload-time = "2025-08-04T01:02:02.029Z" }, ] [[package]]