STACIO WIKI · User Guide

Stacio Remote Connections Guide

Applicable version: Stacio 0.14.x
Updated: 2026-07-25
Audience: developers, operators, and network administrators who create, migrate, or troubleshoot remote sessions

1. Connection paths at a glance

Stacio provides three main connection paths:

Path Best for Is it saved?
Quick Connect Temporary SSH access and first host verification You can save it after a successful connection.
Saved session Frequent use, tags, environment, jump-host, or automation policy Stored in the local session database.
Imported session Migration from another client or a bastion host Saved after preview and confirmation.

Regardless of the path, remote-account permission, host-network policy, and protocol security boundaries are defined by the target environment.

Most sessions connect directly to an IPv4 address such as 192.168.1.20. When SSH uses a non-default port, write 192.168.1.20:2222. Environments with stable DNS can use server.example.com or server.example.com:2222. Examples below use IP first and show equivalent hostname forms where useful.

2. Quick Connect

2.1 IP, port, and hostname conventions

Quick Connect has one SSH Target field that accepts these common forms:

Scenario Input example Effective host Effective port Effective user
Private-network IP, default port 192.168.1.20 192.168.1.20 22 Current macOS user
Private-network IP, custom port 192.168.1.20:2222 192.168.1.20 2222 Current macOS user
Explicit user and IP root@192.168.1.20 192.168.1.20 22 root
Explicit user, IP, and port deploy@192.168.1.20:2222 192.168.1.20 2222 deploy
Hostname, default port server.example.com server.example.com 22 Current macOS user
Hostname and custom port admin@server.example.com:22022 server.example.com 22022 admin

In this guide, IP:port means a complete network endpoint. It does not mean every UI writes both values in the same field:

2.2 Supported Quick Connect input

Quick Connect is currently for SSH and supports:

192.168.1.20
192.168.1.20:2222
root@192.168.1.20
deploy@192.168.1.20:2222
host.example.com
user@host.example.com
user@host.example.com:2222
ssh://deploy@192.168.1.20:2222

The rules are:

If you do not save the session, a local credential reference created for a temporary secret is cleaned up when the connection completes or fails. If you save the session, the reference is retained with the session.

2.3 Recommended uses

3. Create a saved session

Choose File > New Session, then choose a protocol. The current New Session view can save:

RSH, XDMCP, Mosh, S3, and WSL show as unsupported or not saveable in the current version. Do not treat planned items as available connections.

3.1 Common fields

Field Meaning
Name The name shown in the sidebar and tabs; include system, purpose, or environment where helpful.
Host IP address or DNS name only, without user, protocol, or port. A serial session uses a device path instead.
Port Must be from 1 through 65535. Switching protocol fills a common default port.
User Remote login user; optional for some protocols.
Authentication Password, private key, or SSH agent as supported by the protocol.
Tags Search, environment identification, and favorites. Do not store passwords or tokens here.
Tag Color Recognition in the sidebar and tabs.
Environment Development, staging, or production; affects AI/Agent and MultiExec policy.
AI Execution Follow global policy, block execution, command cards only, read-only automatic, or confirm each command.

Fill common saved sessions like this:

Scenario Host field Port field User field
LAN Linux 192.168.1.20 22 root
NAT or custom SSH port 10.20.0.15 2222 deploy
Internal hostname server.example.com 22 admin

Do not enter 192.168.1.20:2222 in Host; it mixes a port into the saved-session host string. Even when a protocol has a default port, retain the explicit value that the UI fills for future review and audit.

Direct IP works well for stable addresses, LANs, VPNs, and fixed public endpoints. Hostnames work well where DNS manages address changes or standardized names. When a hostname connection fails, record the configured hostname, resolved IP, and port, but do not silently replace a saved hostname with one resolution result.

3.2 Naming and tags

Give a session a self-explanatory name, for example:

prod-api-01
staging-postgres-bastion
lab-switch-console

Tags can add information such as project-a, linux, database, or favorite. A production session must set Environment to Production; a prod substring in the name is not a substitute for the production policy.

4. SSH authentication

4.1 Password

  1. Choose Password for authentication.
  2. Enter and save the password.
  3. Stacio stores a credential reference in the session database and the secret in its local encrypted credential store.
  4. If the credential file is missing or cannot be decrypted, Stacio asks you to enter and save it again during connection.

Never put a password in a session name, tag, startup command, environment variable, connection script, or import file.

4.2 Private key

  1. Choose Private Key for authentication.
  2. Select a local private-key path such as ~/.ssh/id_ed25519.
  3. Save the passphrase to the local credential store when the key has one.
  4. Confirm that the current macOS user can still read the private-key file.

Stacio stores the key path and does not put private-key contents into ordinary session export. If you move or delete the key, edit the session and select it again.

4.3 SSH agent

With SSH Agent, Stacio does not require a saved password or private-key passphrase. Success depends on an available SSH agent, the correct key being loaded, and the remote host accepting the matching public key.

5. Host-key confirmation

5.1 First connection

Stacio probes the host key before it sends authentication credentials. On a first connection it displays:

Host-key trust uses the configured host string plus port as the connection identity. These are distinct confirmations and saved records, even if they might reach the same machine:

192.168.1.20:22
192.168.1.20:2222
server.example.com:22

Changing IP to hostname, hostname to IP, or changing the port can therefore trigger a new first-trust prompt. Verify the fingerprint through a trusted channel each time.

Trust sources include a cloud console, the host administrator, an asset system, or another trusted channel. After you confirm it, Stacio persists the trust decision locally.

5.2 Fingerprint changes

When a fingerprint differs from the saved value, Stacio blocks the connection by default. Legitimate causes include a host rebuild, SSH host-key rotation, IP/DNS reassignment, or a changed jump target. It can also indicate a man-in-the-middle attack.

Handle it in this order:

  1. Stop the connection. Do not retry repeatedly or accept the new fingerprint immediately.
  2. Verify the real target, DNS, port, VPN, and jump host.
  3. Obtain the new fingerprint through an independent trusted channel.
  4. Update the local trust record only after confirming the change is authorized.
  5. Keep the time, old/new fingerprint summaries, and confirmer in diagnostics or a change record.

5.3 Jump hosts

ProxyJump verifies jump-host and target-host fingerprints separately. A connection is blocked when either side is not trusted.

6. Jump hosts and ProxyJump

The Jump Host area for an SSH session provides:

Prefer an existing session so that host, account, credentials, and fingerprints are maintained in one place. Manual mode is useful for a temporary or not-yet-saved bastion entry point.

Manual mode also uses separate fields. For a jump endpoint 10.0.0.5:2222, enter Host = 10.0.0.5 and Port = 2222. For a hostname, enter Host = bastion.example.com and Port = 22. Do not paste a complete endpoint into the jump Host field.

The connection path is:

Stacio -> Jump host SSH -> Target host SSH

Notes:

7. Post-connection actions and timeouts

A saved SSH session can configure:

Field Current behavior
Startup Command Displayed with environment variables in the terminal connection banner as Startup plan; not executed automatically in the current version.
Connection Script Automatically written to the SSH shell after it is ready, with a trailing newline.
Environment Variables One KEY=value per line; displayed as the startup plan and not exported to the shell automatically in the current version.
Connection Timeout Controls connection waiting; reconnecting can adaptively increase it from the previous successful duration.

Only a Connection Script is appropriate for commands that must run automatically. Keep it idempotent, auditable, and low risk. Do not configure automatic change scripts for production environments.

8. Other protocols

8.1 SFTP and SCP

8.2 FTP

8.3 Telnet

8.4 VNC

8.5 Serial

A serial session needs a device path plus baud rate, data bits, stop bits, parity, flow control, and backspace key configuration. Built-in presets cover common network-device 9600 8N1 and high-speed console 115200 8N1 settings.

When a device cannot be opened, check:

8.6 Local Terminal

Local Terminal runs on the Mac and does not pass through a remote SSH session. When using a local Agent, distinguish a local shell from a remote terminal operated through stacio-remote.

9. Import sessions

9.1 Supported sources

File > Import Sessions currently lists:

Source Common input
Stacio .json, .stacio-session
Xshell .xsh, .xts, .zip
MobaXterm .mxtsessions
WindTerm .sessions
SecureCRT .xml, .ini, .zip
FinalShell conn directory
Termius .json
Electerm .json
JSON Generic .json
Bastion host .xlsx, .zip, or vendor connection file

Bastion-host import is a License-controlled connection-orchestration capability.

9.2 Secure import process

  1. Select the explicit source type and original export file.
  2. Review names, groups, protocol, target, and conflicts in the preview.
  3. Confirm that port and username have not been parsed incorrectly.
  4. Choose Skip, Replace, or Rename for duplicate session names.
  5. Reconfigure passwords, tokens, and private-key passphrases after import.
  6. Verify host keys again on first connection.

Import does not treat plaintext passwords from external files as trusted credentials. Even Stacio-format import filters credential references and automatic-execution fields; for example, connection scripts or startup commands in an imported file are not silently inherited.

9.3 Import failure

Open View > Diagnostics and inspect the Import Report. Check in particular:

10. Session maintenance

10.1 Change user temporarily

Choose Connect As... from a session context menu to enter a username and open a temporary connection without changing the saved session. This is useful when verifying the same host with a different least-privilege account.

10.2 Ping host

Ping Host continuously shows system Ping output and lets you stop it. Ping accepts only an IP or hostname, not IP:port; an unsuccessful Ping does not prove SSH is unavailable because ICMP may be disabled, routing may differ, or local permission may be restricted. To test an endpoint such as 192.168.1.20:2222, use Diagnostics > Port Check and enter host 192.168.1.20 and port 2222 separately.

10.3 Copy, move, and export

11. Disconnects and reconnecting

An SSH terminal distinguishes connecting, running, disconnected, reconnecting, and closed states. Following a network interruption it can reconnect with increasing delay; manually closing or cancelling stops automatic reconnection.

Before reconnecting, check:

  1. The active tab still points to the intended session.
  2. VPN, Wi-Fi, Ethernet, or proxy access has recovered.
  3. Host and port have not changed.
  4. Credentials are still valid and the SSH agent still has the right key.
  5. The host key has not changed without verification.

Automatic reconnection restores a connection only. It does not guarantee that a foreground remote program, transaction, file write, or unfinished command continues from where it stopped.

12. Troubleshooting errors

Error Likely cause Recommended action
Invalid configuration Empty host, IP:port put in a separate Host field, port out of range, or missing private-key path Edit the session and validate host and port separately.
Authentication failed User, password, key, passphrase, or agent mismatch Revalidate credentials with a least-privilege account.
Connection timed out Network unreachable, port filtering, or SSH not responding Check VPN, route, DNS, port, and timeout settings.
Connection refused Target port is not listening or a firewall actively rejected it Verify listening and policy at the target or boundary device.
Unknown host key First connection or missing local record Verify through a trusted channel, then confirm.
Host key changed Rebuild, rotation, address reuse, or attack Stop immediately and verify independently; do not overwrite it directly.
Jump session not found Referenced ID was deleted or changed after import Select an existing session again or use manual configuration.
Plaintext protocol warning Telnet/FTP are unencrypted Prefer SSH/SFTP; if required, keep use inside a trusted network.

When reporting an issue, include the Stacio version, macOS version, protocol, target port, time of failure, whether a jump host was used, authentication type, and redacted diagnostics. Do not submit secrets or private-key contents.

This page is part of the English Stacio Wiki.