SSH remote execution

With an SSH host configured, DataMind Oda can run files, commands, terminals and confined work on a remote computer over SSH, while the app itself stays on this computer. Use it when the work belongs on another machine, such as a shared build server. This page covers what the connection needs, how it is configured, and what happens when it is lost.

What you need first

Connection settings

Oda connects with these settings. Every value is checked before the connection starts.

SettingWhat it isDefault and limits
Host aliasAn existing SSH host alias from your SSH setup.A plain alias; a value that starts with a dash or carries a command is refused.
Remote runtimeThe absolute path of the Node.js runtime on the remote computer.Must be an absolute path.
Helper pathWhere the helper program is installed on the remote computer.Must be an absolute path.
Helper digestThe SHA-256 digest of the helper program.64 lowercase hexadecimal characters; checked before the connection is used.
Workspace folderThe folder on the remote computer that Oda works in.Must be an absolute path.
Bootstrap path and digestAn optional pair for setups that use a bootstrap.Set both or neither; an unpaired value is refused.
Request timeoutHow long one request may wait.30 seconds.
Frame ceilingThe largest single message between Oda and the helper.64 MiB.
Pending requestsHow many requests may be in flight at once.128.
LeaseHow long the remote side keeps the connection alive without hearing from Oda.30 seconds, from 3 seconds to 10 minutes.

A value that fails a check refuses the connection before anything starts: a host alias with a leading dash or a command in it, a relative path, a digest in the wrong form, one bootstrap value without the other, or a number out of range.

Digest checks

The helper program is versioned, and its digest must match the one you configured before Oda uses the connection. If the installed helper is not the build you configured, the connection is refused with SSH helper digest differs from the configured artifact.

Treat the remote computer and the helper as trusted infrastructure. The digest check catches an unexpected installed program, and confinement limits what Oda does to files. Neither guards against a hostile server, and confinement does not restrict network access or process visibility on the remote computer.

What runs on the remote computer

For more on how remote files, processes and terminals behave, see SSH: files, processes and terminals.

Limits

When the connection is lost

While the connection is still starting, a request is refused with SSH helper is not ready; after it is closed, with SSH connection is closed.

A lost connection is never replayed. Oda cannot know what the remote side finished, so it reports an unknown outcome:

Important

Check the remote computer before you repeat the work.

Cleanup on that side is the helper's job: it cleans up what it started when the connection closes, when the stream ends, or when the lease expires. A cancelled operation is not rolled back either: SSH operation cancelled; a completed remote mutation is not rolled back. If the remote side cannot confirm its cleanup, Oda reports SSH process cleanup could not be confirmed.

Questions, answered

Which systems can I use SSH remote execution with?

Linux and macOS: both the remote computer and the computer you run Oda on must be POSIX systems. Starting the connection from a non-POSIX computer is refused with SSH runtime requires a POSIX client.

What must I install on the remote computer?

A Node.js runtime at an absolute path, and the helper program, both outside the workspace folder and outside the computer's temporary areas. Oda does not install them for you.

Does Oda ask me for my SSH password?

No. Oda connects through the host alias on its own and never runs an interactive sign-in, so the alias must already authenticate without prompting.

What happens if the connection drops while something is running?

Oda reports an unknown outcome (SSH connection lost; remote operation outcome and cleanup are unknown) and never repeats the operation. Cleanup on that side is the helper's job. Check the remote computer before running the work again.

What happens to a remote command I cancel?

It is not rolled back: SSH operation cancelled; a completed remote mutation is not rolled back. A cancelled operation is not undone, so check the remote computer for what completed before you continue.

Can Oda change files outside the workspace on the remote computer?

File changes stay inside the workspace folder, and they are guarded: Oda creates a file only when it is absent, or replaces one only when the version it read is still current. In Full access, remote requests run without confinement by design.

Why does the connection refuse when only one bootstrap value is set?

The bootstrap path and its digest go together: set both or neither. An unpaired value refuses the connection before anything runs.

Why does Oda check the digest of the helper program?

The helper is versioned, and the digest shows that the installed program is the build you configured. If it is not, the connection is refused with SSH helper digest differs from the configured artifact. The check guards against an unexpected installed program; it is not a defence against a hostile server.

How large can one remote read be?

Whole reads and windows inside a file are capped at 8 MiB each; larger files are read in parts. A single message between Oda and the helper is capped at 64 MiB.