How it works

One line on the device. Nothing on the router.

The device dials out, holds one TLS connection on 443, and listens on nothing. No VPN to join, no port to forward, no firewall rule to negotiate with someone else's IT.

The protocols

Three commands, and the ssh you already have

It brokers what the machine already runs

The agent does not replace sshd, and it does not ship a protocol of its own. After jssh login, a managed ssh_config block makes plain ssh work against every enrolled machine, so scp, rsync, Ansible and VS Code Remote-SSH keep working with nothing rewritten.

Step one

The first machine

curl -fsSL https://get.jssh.io | sh
iwr https://get.jssh.io/latest/install.ps1 -OutFile install.ps1powershell -ExecutionPolicy Bypass -File .\install.ps1

Nothing secret in the line

It prints a code and an approval link, and you approve the machine in your browser. There is no token to paste, so this can go through a ticket.

On Windows the installer registers a service, so a kiosk comes back on its own after a reboot with nobody logged in.

Fig. 1

jssh-connect-20260801.mp4 · 60 s · captions on

A first connection end to end: the install line on the device, the approval in the browser, then ssh pi@factory-gw-01.jssh.dev against the sshd the machine was already running. Captions on by default, no sound needed.

Step two

The nine hundred that are already in the field

The browser approval does one machine at a time. A token does nine hundred.

curl -fsSL https://get.jssh.io | JSSH_ENROLL_TOKEN=<token> sh
iwr https://get.jssh.io/latest/install.ps1 -OutFile install.ps1powershell -ExecutionPolicy Bypass -File .\install.ps1 -Token <token>

Step zero, really

Run it next to what you already have

You do not have to move nine hundred machines in a weekend to find out whether this works.

Enroll a few sites, run both for a billing cycle, compare what your technicians actually reach for, then let the other subscription lapse at renewal. There is no cutover day to schedule, and leaving is the same shape: there is no jssh operating system and no jssh protocol, so stopping the agent and removing the binary leaves the machine as it was the day before.

What lands on the machine

One static binary, and nothing it depends on

The question your customer's IT asks first, answered before they ask it.

Shape
one binary no interpreter, no container, no repo to add
Size
4 to 5 MB about 4 MB on ARM and about 5 MB on x86_64
Linking
static The Linux builds link musl statically, so the device's libc is irrelevant
Version
0.2.32 the release this whole site is written against
Listens on
nothing one outbound connection, 443/tcp
Updates
signed A/B staged, and rolls back on its own

The full platform list, the architectures, the compatibility matrix and the one disclosed gap (ARMv6) are on the security page, which needs no login and carries no pricing, so you can forward it as it is.

Run the line on one of your own machines

14 days, up to 25 devices, 5 sessions at a time, no credit card.