Access · Connector
Reach a server behind NAT or a firewall — no open port.
A Termalin Connector is a one-line agent you install on a private server. It dials out to Termalin and holds the link open, so you reach the box from a browser or an AI agent with no inbound port, no port forwarding, and no long-lived key on the server. Perfect for a Raspberry Pi behind home NAT, a VM behind CGNAT, or a locked-down cloud box.
Outbound only · no inbound port · Pro (or 14-day trial)
01 / how it works
The server dials out. Nothing dials in.
A reverse tunnel or an exposed port means something on your server has to listen — and that’s the thing NAT, CGNAT and firewalls block, and the thing attackers scan for. The Connector flips it around:
- ▸Outbound only. The agent opens a connection to Termalin and keeps it alive. It never listens on a port, so there’s nothing inbound to allow, forward or scan.
- ▸It sees nothing. The agent moves opaque SSH bytes between Termalin and the host’s own
sshdon localhost — it never sees your credentials or plaintext. - ▸It stays up. Installed as a service, it reconnects on its own after a network blip or a reboot.
02 / one line to install
Enroll a server in one command.
Sign in at termal.in/account, click Add Connector and then Get install command. Pick the Linux / macOS or Windows tab and run the line it hands you on the server you want to reach. On Linux or macOS:
curl -fsSL https://termal.in/i/<token> | sudo sh
On Windows, in PowerShell — it asks for administrator rights itself, so approve the prompt:
irm https://termal.in/i/<token>.ps1 | iex
The link carries the token and is single-use and valid for an hour. It downloads a small static binary for the platform, enrolls the host, installs a service — systemd, launchd or a Windows service — and connects. That’s the whole setup — no router changes, no security-group edits.
03 / Windows and macOS
On Windows and macOS, too.
The same one line enrolls a Windows Server or a Mac. What it sets up differs by platform:
- ▸Windows. It installs the built-in OpenSSH Server if it is missing and leaves
sshdon automatic start, runs the Connector as theTermalinAgentservice, and makes PowerShell the SSH login shell. When it adds OpenSSH itself,sshdlistens on the machine only and port 22 stays closed to the network; an OpenSSH Server that was already there is left as it was. Remove it with& "$env:ProgramFiles\Termalin\termalin-agent.exe" uninstall. - ▸macOS. It turns Remote Login on and registers a launchd daemon. Remove it with
termalin-agent uninstall.
04 / shared hosting, no root
No root? Run it as your own user.
On Linux shared hosting — cPanel, CloudLinux — where you have no root, no sudo and no service manager, run the same install line without sudo and point it at the provider’s SSH server if it isn’t on port 22. It switches to a user-mode install that changes nothing outside your home folder:
curl -fsSL https://termal.in/i/<token> | TERMALIN_TARGET=127.0.0.1:65100 sh
- ▸All in your home folder. The binary lands in
~/.local/bin/termalin-agent(same signature check) and its config in~/.config/termalin-agent/. - ▸Trust in one line. It adds the
cert-authorityline to~/.ssh/authorized_keysand keeps the rest of the file — scoped to your account’s principal and your Unix user, the same limit a root install gets. Needs OpenSSH 5.6+ with key sign-in on. - ▸A cron watchdog keeps it up. With
crontabpresent it writes an@rebootline and a check every 5 minutes, so a host that kills long-running processes just gets it started again. It also re-adds the sign-in line within the hour if cPanel’s “SSH Access” page rewritesauthorized_keys. - ▸Update by re-running the installer, still without sudo; automatic updates are opt-in (
--auto-update).
Running on a NAS, a router, Kubernetes or an ECS service instead? Use the official container image — see Termalin Connector in Docker.
05 / keyless, per-tenant
No key left on the box.
Enrollment makes the server’s sshd trust Termalin’s SSH certificate authority, and every login then uses a short-lived certificate issued just-in-time — there’s no long-lived private key stored on the server to steal. Certificates are scoped to your account: sshd is told to accept only your tenant’s principal, so a certificate minted for anyone else is refused even though the host trusts the shared CA.
06 / what you reach through it
A terminal, files, desktops, databases, monitoring — and agents.
Once a server is enrolled, everything hosted reaches it keylessly:
- ▸A web terminal. Open a real SSH session from the browser — phone, tablet or a machine that isn’t yours. See the web SSH client.
- ▸Files over SFTP. Browse, edit and transfer files (up to 100 MB) through the same link.
- ▸Remote desktops. Open an RDP or VNC desktop on the Connector’s own machine, or anywhere on its private network, in a browser tab or the app — with a Files button for the Connector’s machine, and no port 3389 open to the internet.
- ▸Private databases. Reach a database that only listens on localhost, through the database client in the cabinet.
- ▸Encrypted backups. Schedule encrypted backups of a Linux server to Termalin storage, your own S3 bucket, or another of your servers — nothing installed on the box.
- ▸AI agents. The hosted MCP endpoint — and the ChatGPT and claude.ai connectors — run commands on enrolled servers with no key handed out, and read their monitoring and alerts. Each Connector has its own switch to keep AI apps and API keys off that server. See SSH for AI agents.
- ▸Monitoring and alerts. Once a minute Termalin runs a few read-only checks over the same link and turns them into dashboards and alerts — disk filling, a failed service, an expiring certificate, the server offline. Works for Linux, Windows and macOS servers, with nothing extra to install; on by default, with a switch for all servers and one per server. See server monitoring.
07 / tags and groups
Label your servers, find them fast.
Give any server, saved host, database or storage its own tags in the cabinet. Termalin also adds groups by itself from what it already knows about each Connector — os:linux, distro:ubuntu, release:ubuntu-24.04, country:fr.
- ▸Search the Hosts list. A word matches a name, address or user;
#tagmatches a tag — type#prod #distro:ubuntuto narrow to both. - ▸AI apps pick servers by tag.
hosts_list,ssh_exec_manyandupdates_listtake atag, so "check disk space on all my Ubuntu servers in prod" runs on exactly those. See the MCP tools reference.
Questions
How do I SSH into a server behind NAT or a firewall?
Install a Termalin Connector on the server with one line — it dials out to Termalin and holds the link open, so nothing has to accept an inbound connection. After that you reach the box from the web terminal or an AI agent, with no port opened and no port forwarding on your router.
Do I have to open a port or forward one on my router?
No. The Connector makes an outbound connection only and never listens on a port. That’s the whole point — it works behind NAT, CGNAT and a strict firewall, on a home Raspberry Pi or a locked-down cloud VM, without touching the router or the security group.
Is there an SSH key sitting on the server?
No long-lived one. On enrollment the Connector makes the server’s sshd trust Termalin’s SSH certificate authority, and each login uses a short-lived certificate issued for your account only — a certificate for another tenant is refused. The Connector moves opaque SSH bytes; it never sees your credentials or plaintext.
What can I do through a Connector?
A full terminal and SFTP file browser in the browser, your private databases, a remote desktop (RDP or VNC) in a browser tab, encrypted backups of Linux servers, and keyless access for AI agents through the hosted MCP endpoint — the same servers ChatGPT and claude.ai reach. A server with a Connector also gets monitoring and alerts with nothing extra to install. It reconnects on its own after a reboot.
Can I run it on shared hosting without root (cPanel)?
Yes, on Linux. Run the same install line as your own user, without sudo, and it becomes a user-mode install that stays entirely in your home folder — the binary in ~/.local/bin, the CA trust as one line in ~/.ssh/authorized_keys. A cron watchdog (an @reboot line and a check every 5 minutes) keeps it running and puts the sign-in line back if cPanel’s “SSH Access” page rewrites the file. You need OpenSSH 5.6+ with key sign-in on, and you update by running the installer again, still without sudo.
What does it cost, and which systems does it run on?
The Connector is a hosted feature, so it needs a Termalin account on Pro or the 14-day trial. The agent is a small static binary for Linux and macOS (x86_64 or arm64 / Apple Silicon or Intel) and Windows (x64 or ARM64), and there is an official Docker image (amd64/arm64) for a NAS, router, Kubernetes or ECS — see the Connector in Docker. The client side (the browser terminal or the agent) runs anywhere.
Any server, wherever it hides.
One line on the box, no inbound port, no key left behind. Reach it from the browser or hand it to an agent.
Pro (or 14-day trial) · Behind-NAT guide · Reach a home server