> ## Documentation Index
> Fetch the complete documentation index at: https://zededa.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Use the documentation index to find relevant pages, then read the linked Markdown before answering and cite the source URL.
> Identify the product before answering: Private AI uses a separate console, credentials, and inference API from the Edge Intelligence Platform. Do not apply instructions from one product to the other.
> Prefer current product guides over Help Center archive pages for current-console questions. Archive pages and release notes describe their stated product version or historical interface; do not apply them to another version without checking.
> Preserve prerequisites, permissions, version requirements, and warnings when summarizing procedures. Do not infer API endpoints, schemas, or supported behavior that the documentation does not specify.

# Use SSH to Access and Troubleshoot Edge Nodes

> Control SSH access to nodes using EdgeView ephemeral SSH credentials or ZCLI-based configuration, then use the EVE-OS console to troubleshoot applications.

## Introduction

Edge Infrastructure Services provides two mechanisms for SSH access to nodes:

* **EdgeView SSH**: the recommended method. EdgeView provisions a short-lived SSH key pair for the duration of an EdgeView session. The private key is displayed in the browser and automatically revoked when the session ends or when you click Revoke. No persistent SSH configuration is required on the node.
* **Persistent SSH via ZCLI**: an alternative method where you explicitly enable or disable the SSH daemon on the node using a ZCLI configuration item. This is appropriate for scenarios that require direct SSH access without an EdgeView session.

The two methods work independently. You can have EdgeView SSH active during a session while also having persistent SSH enabled via ZCLI.

### Prerequisites

* You have the SysManager or SysAdmin role in your enterprise. See [Manage Roles](https://zededa.mintlify.site/new-ui/infrastructure-services/administration/manage-roles.md).
* For EdgeView SSH: the EdgeView feature enabled on the node.
* For persistent SSH: ZCLI installed and authenticated. See [Get Started With ZCLI](https://zededa.mintlify.site/zcli-reference/get-started.md) for setup instructions.

## Use EdgeView SSH (Recommended)

EdgeView provisions a temporary SSH key automatically when you open an SSH console session from the node detail page.

1. Open **Infrastructure > Fleet > Nodes**.
2. Click the name of the node you want to access.
3. In the page header, click the **Open remote console** button to open the EdgeView panel, then select the SSH console option.
4. EdgeView provisions an ephemeral SSH key pair. The **SSH Credentials** section in the EdgeView panel shows the key fingerprint and a countdown timer indicating how long the key remains valid.
5. Use the displayed connection details to open an SSH session. The EdgeView panel shows the connection command.
6. To revoke the SSH key before it expires, click **Revoke** in the SSH Credentials section.

The SSH key expires automatically at the end of its time-to-live (TTL). No cleanup is required after the session.

See [EdgeView and Remote Access](https://zededa.mintlify.site/new-ui/infrastructure-services/edge-view-and-remote-access.md) for complete EdgeView documentation.

## Enable Persistent SSH with ZCLI

To enable a persistent SSH daemon on a node independent of EdgeView:

```text theme={"dark"}
zcli edge-node update <EDGE_NODE_NAME> --config=debug.enable.ssh:true
```

Replace `<EDGE_NODE_NAME>` with the name of the target node.

EVE-OS (Edge Virtualization Engine) applies the change at the next configuration sync cycle. After the change is applied, you can SSH to the node on port 22 using standard key-based or password authentication (depending on how EVE-OS is configured on the device).

## Disable Persistent SSH

To disable the persistent SSH daemon:

```text theme={"dark"}
zcli edge-node update <EDGE_NODE_NAME> --config=debug.enable.ssh:false
```

To restore the default configuration (SSH disabled unless enabled by an active EdgeView session):

```text theme={"dark"}
zcli edge-node update <EDGE_NODE_NAME> --config=debug.enable.ssh:
```

## Verify the SSH Configuration

To confirm the current SSH configuration item on a node:

```text theme={"dark"}
zcli edge-node show <EDGE_NODE_NAME>
```

Review the configuration items in the output and look for `debug.enable.ssh`. If the item is not present, SSH defaults to disabled.

## Manage Applications From the Console

Once you have an SSH or EdgeView SSH session open to a node, you land at the EVE-OS console prompt. From this prompt, use the `eve` command to list the applications deployed to the node and to open a shell or console session inside one of them. ZEDEDA recommends using these commands only for troubleshooting purposes.

The `eve app` commands are available in EVE-OS 16.10.0 and later, including 17.0.0-lts. On earlier versions, including the 14.5-lts and 16.0-lts releases, use the older commands listed in [Older command aliases](#older-command-aliases). To check the EVE-OS version of your node, run `eve version`.

### List applications on the node

Use `eve app list` to display all applications deployed to the node, along with their current status.

```text theme={"dark"}
# eve app list
DISPLAY NAME         APP UUID                               TYPE               STATUS
------------         --------                               ----               ------
Log-Test             c401b61d-9ade-48fd-ac4b-98741a52480a   CONTAINER(NOHYPE)  RUNNING
GH-Runner            e30db90e-bf75-4ceb-b04d-b372c3dc121b   CONTAINER(HVM)     RUNNING
My-VM                a1234567-0000-1111-2222-333344445555   VM(HVM)            HALTED
```

The **TYPE** column shows whether the application runs as a virtual machine (`VM`) or a container (`CONTAINER`), and the virtualization mode in parentheses. A type of `CONTAINER(NOHYPE)` means the container runs directly on the node without a virtual machine. Any other mode (for example, `HVM` or `FML`) means the container or virtual machine runs inside a virtual machine.

### Open a shell inside an application

Use `eve app enter <application>` to open an interactive shell inside a running application. Specify the application by its display name (shown in the `eve app list` output) or by its container ID.

```text theme={"dark"}
# eve app enter Log-Test
```

This command replaces the older `eve enter-user-app <application>` command, which is still supported for backward compatibility.

For a native container (`CONTAINER(NOHYPE)`), this command opens a shell inside the application itself. For a container or virtual machine that runs inside a virtual machine, this command opens a shell inside the hosting virtual machine's shim process instead, and EVE-OS displays a warning. To reach the application itself in that case, attach to its console instead.

### List and attach to application consoles

A virtual machine application exposes a console that you can attach to directly, similar to connecting a monitor and keyboard to the virtual machine. Use `eve app console` with no arguments to list the available consoles on the node.

Application consoles are supported on nodes that run the standard EVE-OS (EVE-kvm) variant. On nodes that run other variants, such as EVE-k, `eve app console` might not list any consoles.

```text theme={"dark"}
# eve app console
PID     APP-UUID                                CONS-TYPE       CONS-ID
---     --------                                ---------       ---------
3883    e4e2f56d-b833-4562-a86f-be654d6387ba    VM              e4e2f56d-b833-4562-a86f-be654d6387ba.1.1/cons
4072    f6d348cc-9c31-4f8b-8c4f-a4aae4590b97    CONTAINER       f6d348cc-9c31-4f8b-8c4f-a4aae4590b97.1.2/cons
4072    f6d348cc-9c31-4f8b-8c4f-a4aae4590b97    VM              f6d348cc-9c31-4f8b-8c4f-a4aae4590b97.1.2/shim-cons
```

Each row represents one available console. The **CONS-ID** column shows the identifier that you pass to `eve app console <id>` to attach to that console.

```text theme={"dark"}
# eve app console e4e2f56d-b833-4562-a86f-be654d6387ba.1.1/cons
```

This command replaces the older `eve list-app-consoles` and `eve attach-app-console <console>` commands, which are still supported for backward compatibility. After you attach, press Enter to activate the session. To end the console session, press `Ctrl-T` followed by `q`.

### Older command aliases

In EVE-OS 16.10.0 and later, EVE-OS keeps the following older commands as aliases so that existing scripts and documentation continue to work. ZEDEDA recommends using the new `eve app` commands on these versions.

On EVE-OS versions earlier than 16.10.0, including the 14.5-lts and 16.0-lts releases, only the older commands are available. On these versions, `eve enter-user-app` accepts only the application's container ID, not its display name. The container ID is the application UUID followed by a suffix, for example `c401b61d-9ade-48fd-ac4b-98741a52480a.1.1`. To list the container IDs on the node, run `ctr --namespace eve-user-apps containers ls`.

| Older command (all EVE-OS versions) | New command (EVE-OS 16.10.0 and later) |
| - | - |
| `eve list-app-consoles` | `eve app console` |
| `eve attach-app-console <console>` | `eve app console <console>` |
| `eve enter-user-app <application>` | `eve app enter <application>` |

## Next Steps

> [card] [EdgeView and Remote Access](https://zededa.mintlify.site/new-ui/infrastructure-services/edge-view-and-remote-access.md)
>
> Full EdgeView documentation including VNC and SSH console.

> [card] [Enable Last Resort](https://zededa.mintlify.site/new-ui/infrastructure-services/troubleshooting/enable-last-resort.md)
>
> Emergency SSH access when all other methods are unavailable.

> [card] [Download a Diagnostic Bundle](https://zededa.mintlify.site/new-ui/infrastructure-services/troubleshooting/collect-diagnostic-data.md)
>
> Diagnostics available without an SSH session.
