Instance Connect
Instance Connect lets you SSH into an Excloud VM without ever distributing a persistent public key to the instance. Every session pushes a fresh one-time key (typically valid for ~60 seconds), which is consumed by the next SSH handshake. Concept is the same as AWS EC2 Instance Connect; the implementation is Excloud’s own.
The benefits:
- Keyless access — nothing to rotate, nothing to revoke off-host.
- Audited — every connect call goes through IAM (
compute:instance:connect) and is logged with the requesting identity. - Short blast radius — even if a session key is captured in transit, it’s already useless by the time anyone notices.
Quick connect
If you have the
exc CLI installed and are authenticated:
exc compute connect --vm_id 42 --user ubuntuThat single command:
- Asks the compute API for a short-lived key pair scoped to VM 42 and the
ubuntuuser. - Pushes the public half to the VM.
- Opens an interactive SSH session using the private half.
- Discards the keys when the session ends.
For one-off commands instead of an interactive shell:
exc compute exec --vm-id 42 --command 'systemctl status nginx'To transfer files:
exc compute scp --vm-id 42 --src ./deploy.tar.gz --dst /tmp/deploy.tar.gzFor the other direction (remote → local), add --download:
exc compute scp --vm-id 42 --download --src /var/log/syslog --dst ./syslogTo open a serial console (useful when SSH is broken):
exc compute console --vm_id 42Required permissions
The caller needs compute:instance:connect on the target VM. The default Admin policy grants this. For a least-privileged operator role:
{
"Version": "2024-03-05",
"Statements": [
{ "Effect": "Allow", "Action": "compute:instance:connect", "Resource": "exc:compute:instance/42" }
]
}Replace 42 with the instance ID, or use exc:compute:instance/* for any VM in the org. See the
Policies guide.
Older VMs
Pre-June-2025 instances
VMs created after June 2025 ship with Instance Connect support built into the image. Older VMs need the exc-instance-connect agent installed once before they can accept short-lived keys.
On Debian/Ubuntu:
# 1. Trust the Excloud package repository
curl -fsSL https://repo.excloud.in/RepoKey.gpg \
| sudo gpg --dearmor -o /usr/share/keyrings/excloud-apt.gpg
# 2. Add the repo
echo "deb [signed-by=/usr/share/keyrings/excloud-apt.gpg] \
https://repo.excloud.in stable main" \
| sudo tee /etc/apt/sources.list.d/excloud.list
# 3. Install
sudo apt update
sudo apt install exc-instance-connectOnce installed, the agent runs on demand — no daemon to keep alive.
How it works under the hood
exc compute connectcallsPOST /compute/instance/connect, passing the VM ID and the desired Linux user.- The compute API generates an ephemeral SSH key pair, pushes the public half to the VM through Excloud’s internal control channel, and returns the private half to the CLI.
- The CLI uses the private key to open a normal SSH session. The public key expires server-side after a short window, so even a leaked private key has a brief useful life.
- There is also a WebSocket variant at
GET /compute/instance/connect/ws/:idused by the browser console.
You can perform step 1 yourself from any HTTP client — see the
Compute Swagger UI — and then use the returned key with ssh -i directly. That’s how exc compute connect works internally.