Azure / Azure/azure-cli

az ssh vm/config give errors when connecting `ModuleNotFoundError: No module named 'rpds.rpds'`

Open
#29,938 22 comments 9 reactions 0 assignees View on GitHub
act-observability-squad Auto-Assign bug customer-reported Service Attention SSH VM SSH
Dominant language
Python
Stars
4.6k
Forks
3.5k
Avg merge
3d 2h
Merged PRs (30d)
60

Description

### Describe the bug

When trying to connect a ssh session to a Azure VM az cli it just crashes with an error `ModuleNotFoundError: No module named 'rpds.rpds'`

### Related command

`az ssh vm`
`az ssh config`

the arguments passed into this after do not matter. ANYTHING results in below error

### Errors

```
The command failed with an unexpected error. Here is the traceback:
No module named 'rpds.rpds'
Traceback (most recent call last):
File "/opt/az/lib/python3.11/site-packages/knack/cli.py", line 233, in invoke
cmd_result = self.invocation.execute(args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.11/site-packages/azure/cli/core/commands/__init__.py", line 564, in execute
self.commands_loader.load_arguments(command)
File "/opt/az/lib/python3.11/site-packages/azure/cli/core/__init__.py", line 526, in load_arguments
self.command_table[command].load_arguments() # this loads the arguments via reflection
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.11/site-packages/azure/cli/core/commands/__init__.py", line 321, in load_arguments
super(AzCliCommand, self).load_arguments()
File "/opt/az/lib/python3.11/site-packages/knack/commands.py", line 104, in load_arguments
cmd_args = self.arguments_loader()
^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.11/site-packages/azure/cli/core/commands/command_operation.py", line 125, in arguments_loader
op = self.get_op_handler(self.op_path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.11/site-packages/azure/cli/core/commands/command_operation.py", line 59, in get_op_handler
handler = import_module(mod_to_import)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.11/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "", line 1204, in _gcd_import
File "", line 1176, in _find_and_load
File "", line 1147, in _find_and_load_unlocked
File "", line 690, in _load_unlocked
File "", line 940, in exec_module
File "", line 241, in _call_with_frames_removed
File "/root/.azure/cliextensions/ssh/azext_ssh/custom.py", line 20, in
from . import rdp_utils
File "/root/.azure/cliextensions/ssh/azext_ssh/rdp_utils.py", line 19, in
from . import ssh_utils
File "/root/.azure/cliextensions/ssh/azext_ssh/ssh_utils.py", line 20, in
from . import connectivity_utils
File "/root/.azure/cliextensions/ssh/azext_ssh/connectivity_utils.py", line 10, in
import oras.client
File "/root/.azure/cliextensions/ssh/oras/client.py", line 12, in
import oras.provider
File "/root/.azure/cliextensions/ssh/oras/provider.py", line 14, in
import jsonschema
File "/root/.azure/cliextensions/ssh/jsonschema/__init__.py", line 13, in
from jsonschema._format import FormatChecker
File "/root/.azure/cliextensions/ssh/jsonschema/_format.py", line 11, in
from jsonschema.exceptions import FormatError
File "/root/.azure/cliextensions/ssh/jsonschema/exceptions.py", line 15, in
from referencing.exceptions import Unresolvable as _Unresolvable
File "/root/.azure/cliextensions/ssh/referencing/__init__.py", line 5, in
from referencing._core import Anchor, Registry, Resource, Specification
File "/root/.azure/cliextensions/ssh/referencing/_core.py", line 9, in
from rpds import HashTrieMap, HashTrieSet, List
File "/root/.azure/cliextensions/ssh/rpds/__init__.py", line 1, in
from .rpds import *
ModuleNotFoundError: No module named 'rpds.rpds'
```

### Issue script & Debug output

```
root@VD011855:/mnt/d/dev/ringfence# az ssh vm --hostname ${FQDN} --port 1022 --debug
cli.knack.cli: Command arguments: ['ssh', 'vm', '--hostname', 'SENSITIVEINFO.com', '--port', '1022', '--debug']
cli.knack.cli: __init__ debug log:
Enable color in terminal.
cli.knack.cli: Event: Cli.PreExecute []
cli.knack.cli: Event: CommandParser.OnGlobalArgumentsCreate [, , ]
cli.knack.cli: Event: CommandInvoker.OnPreCommandTableCreate []
cli.azure.cli.core: Modules found from index for 'ssh': ['azext_ssh']
cli.azure.cli.core: Loading command modules:
cli.azure.cli.core: Name Load Time Groups Commands
cli.azure.cli.core: Total (0) 0.000 0 0
cli.azure.cli.core: These extensions are not installed and will be skipped: ['azext_ai_examples', 'azext_next']
cli.azure.cli.core: Loading extensions:
cli.azure.cli.core: Name Load Time Groups Commands Directory
cli.azure.cli.core: ssh 2.079 1 4 /root/.azure/cliextensions/ssh
cli.azure.cli.core: Total (1) 2.079 1 4
cli.azure.cli.core: Loaded 1 groups, 4 commands.
cli.azure.cli.core: Found a match in the command table.
cli.azure.cli.core: Raw command : ssh vm
cli.azure.cli.core: Command table: ssh vm
cli.knack.cli: Event: CommandInvoker.OnPreCommandTableTruncate []
cli.azure.cli.core.azlogging: metadata file logging enabled - writing logs to '/root/.azure/commands/2024-09-19.14-33-33.ssh_vm.461.log'.
az_command_data_logger: command args: ssh vm --hostname {} --port {} --debug
cli.knack.cli: Event: CommandInvoker.OnPreArgumentLoad [.add_subscription_parameter at 0x7f22f67c8540>]
cli.azure.cli.core.azclierror: Traceback (most recent call last):
File "/opt/az/lib/python3.11/site-packages/knack/cli.py", line 233, in invoke
cmd_result = self.invocation.execute(args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.11/site-packages/azure/cli/core/commands/__init__.py", line 564, in execute
self.commands_loader.load_arguments(command)
File "/opt/az/lib/python3.11/site-packages/azure/cli/core/__init__.py", line 526, in load_arguments
self.command_table[command].load_arguments() # this loads the arguments via reflection
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.11/site-packages/azure/cli/core/commands/__init__.py", line 321, in load_arguments
super(AzCliCommand, self).load_arguments()
File "/opt/az/lib/python3.11/site-packages/knack/commands.py", line 104, in load_arguments
cmd_args = self.arguments_loader()
^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.11/site-packages/azure/cli/core/commands/command_operation.py", line 125, in arguments_loader
op = self.get_op_handler(self.op_path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.11/site-packages/azure/cli/core/commands/command_operation.py", line 59, in get_op_handler
handler = import_module(mod_to_import)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.11/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "", line 1204, in _gcd_import
File "", line 1176, in _find_and_load
File "", line 1147, in _find_and_load_unlocked
File "", line 690, in _load_unlocked
File "", line 940, in exec_module
File "", line 241, in _call_with_frames_removed
File "/root/.azure/cliextensions/ssh/azext_ssh/custom.py", line 20, in
from . import rdp_utils
File "/root/.azure/cliextensions/ssh/azext_ssh/rdp_utils.py", line 19, in
from . import ssh_utils
File "/root/.azure/cliextensions/ssh/azext_ssh/ssh_utils.py", line 20, in
from . import connectivity_utils
File "/root/.azure/cliextensions/ssh/azext_ssh/connectivity_utils.py", line 10, in
import oras.client
File "/root/.azure/cliextensions/ssh/oras/client.py", line 12, in
import oras.provider
File "/root/.azure/cliextensions/ssh/oras/provider.py", line 14, in
import jsonschema
File "/root/.azure/cliextensions/ssh/jsonschema/__init__.py", line 13, in
from jsonschema._format import FormatChecker
File "/root/.azure/cliextensions/ssh/jsonschema/_format.py", line 11, in
from jsonschema.exceptions import FormatError
File "/root/.azure/cliextensions/ssh/jsonschema/exceptions.py", line 15, in
from referencing.exceptions import Unresolvable as _Unresolvable
File "/root/.azure/cliextensions/ssh/referencing/__init__.py", line 5, in
from referencing._core import Anchor, Registry, Resource, Specification
File "/root/.azure/cliextensions/ssh/referencing/_core.py", line 9, in
from rpds import HashTrieMap, HashTrieSet, List
File "/root/.azure/cliextensions/ssh/rpds/__init__.py", line 1, in
from .rpds import *
ModuleNotFoundError: No module named 'rpds.rpds'

cli.azure.cli.core.azclierror: The command failed with an unexpected error. Here is the traceback:
az_command_data_logger: The command failed with an unexpected error. Here is the traceback:
cli.azure.cli.core.azclierror: No module named 'rpds.rpds'
Traceback (most recent call last):
File "/opt/az/lib/python3.11/site-packages/knack/cli.py", line 233, in invoke
cmd_result = self.invocation.execute(args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.11/site-packages/azure/cli/core/commands/__init__.py", line 564, in execute
self.commands_loader.load_arguments(command)
File "/opt/az/lib/python3.11/site-packages/azure/cli/core/__init__.py", line 526, in load_arguments
self.command_table[command].load_arguments() # this loads the arguments via reflection
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.11/site-packages/azure/cli/core/commands/__init__.py", line 321, in load_arguments
super(AzCliCommand, self).load_arguments()
File "/opt/az/lib/python3.11/site-packages/knack/commands.py", line 104, in load_arguments
cmd_args = self.arguments_loader()
^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.11/site-packages/azure/cli/core/commands/command_operation.py", line 125, in arguments_loader
op = self.get_op_handler(self.op_path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.11/site-packages/azure/cli/core/commands/command_operation.py", line 59, in get_op_handler
handler = import_module(mod_to_import)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.11/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "", line 1204, in _gcd_import
File "", line 1176, in _find_and_load
File "", line 1147, in _find_and_load_unlocked
File "", line 690, in _load_unlocked
File "", line 940, in exec_module
File "", line 241, in _call_with_frames_removed
File "/root/.azure/cliextensions/ssh/azext_ssh/custom.py", line 20, in
from . import rdp_utils
File "/root/.azure/cliextensions/ssh/azext_ssh/rdp_utils.py", line 19, in
from . import ssh_utils
File "/root/.azure/cliextensions/ssh/azext_ssh/ssh_utils.py", line 20, in
from . import connectivity_utils
File "/root/.azure/cliextensions/ssh/azext_ssh/connectivity_utils.py", line 10, in
import oras.client
File "/root/.azure/cliextensions/ssh/oras/client.py", line 12, in
import oras.provider
File "/root/.azure/cliextensions/ssh/oras/provider.py", line 14, in
import jsonschema
File "/root/.azure/cliextensions/ssh/jsonschema/__init__.py", line 13, in
from jsonschema._format import FormatChecker
File "/root/.azure/cliextensions/ssh/jsonschema/_format.py", line 11, in
from jsonschema.exceptions import FormatError
File "/root/.azure/cliextensions/ssh/jsonschema/exceptions.py", line 15, in
from referencing.exceptions import Unresolvable as _Unresolvable
File "/root/.azure/cliextensions/ssh/referencing/__init__.py", line 5, in
from referencing._core import Anchor, Registry, Resource, Specification
File "/root/.azure/cliextensions/ssh/referencing/_core.py", line 9, in
from rpds import HashTrieMap, HashTrieSet, List
File "/root/.azure/cliextensions/ssh/rpds/__init__.py", line 1, in
from .rpds import *
ModuleNotFoundError: No module named 'rpds.rpds'
az_command_data_logger: No module named 'rpds.rpds'
Traceback (most recent call last):
File "/opt/az/lib/python3.11/site-packages/knack/cli.py", line 233, in invoke
cmd_result = self.invocation.execute(args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.11/site-packages/azure/cli/core/commands/__init__.py", line 564, in execute
self.commands_loader.load_arguments(command)
File "/opt/az/lib/python3.11/site-packages/azure/cli/core/__init__.py", line 526, in load_arguments
self.command_table[command].load_arguments() # this loads the arguments via reflection
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.11/site-packages/azure/cli/core/commands/__init__.py", line 321, in load_arguments
super(AzCliCommand, self).load_arguments()
File "/opt/az/lib/python3.11/site-packages/knack/commands.py", line 104, in load_arguments
cmd_args = self.arguments_loader()
^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.11/site-packages/azure/cli/core/commands/command_operation.py", line 125, in arguments_loader
op = self.get_op_handler(self.op_path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.11/site-packages/azure/cli/core/commands/command_operation.py", line 59, in get_op_handler
handler = import_module(mod_to_import)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/az/lib/python3.11/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "", line 1204, in _gcd_import
File "", line 1176, in _find_and_load
File "", line 1147, in _find_and_load_unlocked
File "", line 690, in _load_unlocked
File "", line 940, in exec_module
File "", line 241, in _call_with_frames_removed
File "/root/.azure/cliextensions/ssh/azext_ssh/custom.py", line 20, in
from . import rdp_utils
File "/root/.azure/cliextensions/ssh/azext_ssh/rdp_utils.py", line 19, in
from . import ssh_utils
File "/root/.azure/cliextensions/ssh/azext_ssh/ssh_utils.py", line 20, in
from . import connectivity_utils
File "/root/.azure/cliextensions/ssh/azext_ssh/connectivity_utils.py", line 10, in
import oras.client
File "/root/.azure/cliextensions/ssh/oras/client.py", line 12, in
import oras.provider
File "/root/.azure/cliextensions/ssh/oras/provider.py", line 14, in
import jsonschema
File "/root/.azure/cliextensions/ssh/jsonschema/__init__.py", line 13, in
from jsonschema._format import FormatChecker
File "/root/.azure/cliextensions/ssh/jsonschema/_format.py", line 11, in
from jsonschema.exceptions import FormatError
File "/root/.azure/cliextensions/ssh/jsonschema/exceptions.py", line 15, in
from referencing.exceptions import Unresolvable as _Unresolvable
File "/root/.azure/cliextensions/ssh/referencing/__init__.py", line 5, in
from referencing._core import Anchor, Registry, Resource, Specification
File "/root/.azure/cliextensions/ssh/referencing/_core.py", line 9, in
from rpds import HashTrieMap, HashTrieSet, List
File "/root/.azure/cliextensions/ssh/rpds/__init__.py", line 1, in
from .rpds import *
ModuleNotFoundError: No module named 'rpds.rpds'
To check existing issues, please visit: https://github.com/Azure/azure-cli/issues
cli.knack.cli: Event: Cli.PostExecute []
az_command_data_logger: exit code: 1
cli.__main__: Command ran in 3.750 seconds (init: 0.213, invoke: 3.537)
telemetry.main: Begin splitting cli events and extra events, total events: 1
telemetry.client: Accumulated 0 events. Flush the clients.
telemetry.main: Finish splitting cli events and extra events, cli events: 1
telemetry.save: Save telemetry record of length 7655 in cache file under /root/.azure/telemetry/20240919143334595
telemetry.main: Begin creating telemetry upload process.
telemetry.process: Creating upload process: "/opt/az/bin/python3 /opt/az/lib/python3.11/site-packages/azure/cli/telemetry/__init__.py /root/.azure /root/.azure/telemetry/20240919143334595"
telemetry.process: Return from creating process 466
telemetry.main: Finish creating telemetry upload process.
```

### Expected behavior

az ssh config downloads a config file or az ssh vm connects to the vm

### Environment Summary

```
azure-cli 2.64.0

core 2.64.0
telemetry 1.1.0

Extensions:
containerapp 1.0.0b2
managementpartner 0.1.3
resource-graph 2.1.0
ssh 2.0.5

Dependencies:
msal 1.30.0
azure-mgmt-resource 23.1.1

Python location '/opt/az/bin/python3'
Extensions directory '/root/.azure/cliextensions'

Python (Linux) 3.11.8 (main, Aug 28 2024, 05:45:28) [GCC 9.4.0]

Legal docs and information: aka.ms/AzureCliLegal

Your CLI is up-to-date.
```

### Additional context

this used to work fine with older version (i think around 2.58/2.59) but downgrading to these versions is now also broken...

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.