Before you start
- The owner or admin role on the project. Protected steps also need a verified email address.
- A hardened Linux host for the connector, on amd64 or arm64.
- Administrative access to the target, and a separate trusted console on it.
- Cosign v3.1.3 on both hosts, to check the release.
- The Squasher CLI, for the
authority-bundleandverification-bootstrapcommands. The CLI has no public install package yet, so you can also call the Remote access API for these two steps.
/var/lib/squasher-connector for connector state,
/var/lib/squasher-target/config.json for the target configuration, and
/run/squasher-target/target.sock for the target socket.
Install and enroll the connector
1
Download and check the release
On the connector host, download the archive and check the signing key, the signatures, the
checksums, the SBOM, and the build provenance before you extract it. Do not pipe a download into
a shell.
2
Install the connector
The installer creates the
squasher-connector account and its directories. It does not start a
service.3
Create the connector in Squasher
- Select Settings in the sidebar, then the Remote Access tab.
- Under 1. Connect your network, enter a Connector label that names the private network, and select Create connector.
- Select Copy one-time code. The code is available only in this page view and is hidden by default. To read it, select Reveal one-time code, then Hide one-time code to hide it again.
4
Enroll and start the connector
Create a disabled target
1
Make an auth profile ID
On the connector host, make a random ID for the target’s SSH profile. It is not a secret. Keep
it with your target records.
2
Create the target in Squasher
- Under 2. Register targets and policy, select Add target.
- Enter a Target label that is not a host name, the Environment, the Connector, and the Opaque auth profile ID.
- Select Create disabled target, then copy the Target ID from the target card.
host.* operations, 256 KiB of output, and
30 seconds. Do not enter a host, an SSH user, a host key, or a key path in Squasher.3
Add the target to the connector
From the trusted console on the target, read its Ed25519 host public key:Send that value to the connector host through your protected setup channel. On the connector
host, pin the host key and create the SSH client key for this target:Squasher never receives the private key, the host, or the SSH user. Keep them out of process
arguments.
4
Make the forced authorized_keys entry
restrict, forwarding, PTY,
user-rc, or forced-command options.Install the target runner
1
Install the target role
On the target, repeat the download and checks from
Install and enroll the connector. Then install the target
role and the forced key. The installer creates the locked Keep the whole path and the file owned by root. The
squasher-agent account. It does not
start a service.squasher-agent account can read the key
options but must not change them.2
Get the verification bootstrap and the fingerprint
These two values travel on separate channels, so that one stolen channel is not enough.
-
On a protected workstation, write the short-lived signed bootstrap to a new file:
- In the dashboard, select Reveal signing-key fingerprint on the target card, and complete email verification. Copy the 64-character fingerprint, then select Dismiss and clear.
3
Bootstrap verification-only trust
Move the bootstrap file and the fingerprint to the target. Then run, as root:The command fails if the signature or the fingerprint does not match. In this state, the target
accepts only the verification check. It rejects all other work.
Verify the target
Squasher enables a target only when two independent checks agree: a signed proof from the connector, and a host key fingerprint that you read on the target yourself.1
Ask the connector for proof
On the target card, select Ask connector to verify. Then, on the connector host, run:The connector checks the pinned host key, uses the forced command, and sends only the
runner.probe operation. It submits a signed proof.2
Confirm the fingerprint yourself
From the trusted console on the target, compute the digest of the host public key:Enter the 64-character digest in Independent host fingerprint digest and select Confirm
connector proof and fingerprint. Complete email verification, then select it again. API keys
and agents cannot do this step.
3
Activate the target
When both checks match, write the signed authority to a new file, move it to the target through
your protected channel, and apply it as root:The target accepts observe operations only after this command succeeds.
Rotate or revoke access
After a rotation, run
squasher-connector rotate-identity on the connector host and enter the new
code at the hidden prompt. The code expires after 10 minutes. The connector switches to the new
identity only after Squasher accepts it, then deletes the old private key.
A revoke stops new work and makes open grants invalid. If a host may be compromised, also stop its
local service and remove its authorized_keys entry. You cannot rotate the SSH client key of one
target yet. Disable the target before you replace that key.
Next steps
Agent remote access
See the operations, permissions, and audit trail.
Remote access API
Preview, create, and read requests.