Remote access
How people, scripts and AI agents reach private servers and databases without a public IP or a shared VPN.
3 technologies on this page ↓How it works
Private servers and databases sit in subnets with no public IP. Rather than putting a person on the whole network with a VPN, an access service stands in front. The caller (an engineer, a CI job, an AI agent) signs in with single sign-on, the service checks that this identity may reach this one host or database right now, and then proxies a single connection to it, often through a local port on the caller’s machine. A connector or agent inside the private network usually dials out to the service, so no inbound firewall rule is needed. Credentials can be issued for the session and expire with it, and each session is logged or recorded.
A front desk instead of a master key. You show your badge, the desk lets you into the one room you booked, the visit goes in the log, and your temporary pass stops working when you leave.
Reach for it when
- Engineers need a shell on servers or a SQL prompt on databases in private subnets
- Replacing a shared bastion host whose SSH key has been copied to every laptop
- Contractors, CI jobs or AI agents need time-limited access to one system, not the whole network
- Auditors ask who connected to production, when, and what they did there
Think twice when
- Service-to-service traffic inside your system: that belongs on private networking and load balancers
- Bulk data copies and replication, where every byte would squeeze through the proxy
- Giving servers a public IP and opening port 22 to the internet “just for now”
A real example
An on-call engineer signs in with SSO and MFA and asks for the orders-db target. The access service creates a database user that expires in one hour, opens a tunnel to a local port, and logs the session. The database has no public IP, and its firewall only accepts the connector. A laptop presenting an expired token is refused before any packet reaches the subnet.
Technologies
Specific products, and what each does differently.
HashiCorp BoundaryCommercialAn identity-aware proxy: users sign in once and get one proxied session to one private host or database, with credentials fetched per session.| Commercial product | Cloudflare, Inc. | Proprietary | 2026-10-12 | |
| Commercial product | Cloudflare, Inc. | Proprietary service (cloudflared is Apache 2.0) | 2026-10-12 | |
HashiCorp Boundary | Commercial product | HashiCorp, an IBM company | Business Source License 1.1 since 0.14 (source-available, not OSI open source); MPL 2.0 before the August 2023 change | 2026-10-05 |
What each provider calls it
- AWS
- Systems Manager Session Manager, EC2 Instance Connect Endpoint, Verified Access
- Google Cloud
- Identity-Aware Proxy (TCP forwarding), OS Login
- Azure
- Azure Bastion, Microsoft Entra Private Access
- Open source & others
- OpenSSH ProxyJump, HashiCorp Boundary (BUSL), Teleport (AGPL source; Community Edition binaries limited to small companies)
In code · bash
# 1. Classic jump host: hop through one hardened bastion (OpenSSH 7.3+)
ssh -J ops@bastion.example.com admin@10.0.2.15
# 2. AWS: no bastion, no inbound port; the SSM Agent on the instance dials out
aws ssm start-session --target i-0abc1234def567890 \
--document-name AWS-StartPortForwardingSessionToRemoteHost \
--parameters '{"host":["orders-db.internal"],"portNumber":["5432"],"localPortNumber":["15432"]}'
psql "host=localhost port=15432 dbname=orders user=analyst"
# 3. Google Cloud: IAP checks your identity, then tunnels to a VM with no external IP
gcloud compute ssh app-1 --zone=europe-west1-b --tunnel-through-iapOften confused with
Where it came from2014–2026
Early firewalls let almost nothing in from the internet, so administrators picked a few machines to be the way through. Marcus Ranum’s paper “Thinking About Firewalls” named them bastion hosts, after the fortified corners of a medieval castle: systems that get extra hardening and regular audits. For decades the pattern stayed the same. Engineers connected to a bastion or jump box, or joined a VPN, and from there could reach whatever the network allowed.
In 2014 Google described BeyondCorp, its move away from a privileged internal network: because once the perimeter was breached, an attacker had relatively easy access to everything inside. Google put its corporate applications behind an access proxy that checks the user and the device on every request, and later extended that proxy beyond the web to protocols such as SSH. In 2020 NIST’s zero trust architecture (SP 800-207) turned the idea into guidance: no implicit trust from network location, and authentication and authorization before each session.
The clouds then built the same idea into their consoles. AWS Systems Manager Session Manager (2018) gave shells without inbound ports, bastions or SSH keys, Google’s Identity-Aware Proxy carried TCP connections inside HTTPS and checked IAM before forwarding them, and Azure Bastion and EC2 Instance Connect Endpoint reached machines without public IPs. Tools like HashiCorp Boundary and Teleport added per-session credentials and session recording, and are now being pitched as the gate for AI agents that need infrastructure access.
Why it’s built this way
- One hardened entry point instead of exposing every server
- Defending one well-watched machine is easier than defending dozens. The bastion host got extra security attention, audits and modified software so the servers behind it didn’t have to face the internet.
- Decide per request from user and device, not from the network
- A VPN or flat internal network trusts anyone who gets inside. BeyondCorp and zero trust check each request’s identity and device, so a stolen VPN login no longer opens everything.
- Connectors that dial out instead of ports that listen
- An agent or worker inside the private network opens an outbound connection to the access service, so the network needs no inbound firewall rule and the hosts need no public IP.
- Credentials issued for the session, not shared keys
- A shared SSH key or database password outlives the people who know it. Credentials tied to an identity and a session expire on their own and show up in the audit log under a name.
Timeline
- 2014
Google’s BeyondCorp paper drops the privileged corporate network
- 2016
OpenSSH 7.3 adds
ProxyJump(ssh -J) for hopping through bastions - 2018
AWS Session Manager: shell access without inbound ports, bastions or SSH keys
- 2020
NIST publishes SP 800-207 Zero Trust Architecture; HashiCorp announces Boundary
- 2023
EC2 Instance Connect Endpoint reaches instances without public IPs
- 2026
Access tools add controls for AI agents reaching infrastructure
- Marcus J. Ranum: Thinking About Firewalls (bastion host definition) · archived copy, original
- Wikipedia: Bastion host
- BeyondCorp: A new approach to enterprise security (Ward and Beyer, 2014)
- BeyondCorp: The access proxy (2016)
- NIST SP 800-207: Zero Trust Architecture (Aug 2020)
- OpenSSH 7.3 release notes (Aug 2016)
- AWS What’s New: Introducing Session Manager (Sep 2018)
- AWS What’s New: EC2 Instance Connect Endpoint (Jun 2023)
- HashiCorp blog: Announcing HashiCorp Boundary (Oct 2020)
- HashiCorp blog: Secure AI agents with HashiCorp Boundary (Sep 2026)
Sources17
- AWS docs: AWS Systems Manager Session Manager
- AWS docs: Session Manager prerequisites (outbound HTTPS to ssmmessages)
- AWS docs: Start a session (port forwarding to a remote host)
- AWS docs: Connect using EC2 Instance Connect Endpoint
- AWS docs: What is AWS Verified Access?
- Google Cloud docs: Using IAP for TCP forwarding
- Google Cloud docs: About OS Login
- Microsoft Learn: What is Azure Bastion?
- Microsoft Learn: Microsoft Entra Private Access
- Boundary docs: What is Boundary?
- Boundary docs: Credential management (brokering and injection)
- Boundary docs: Session recording
- GitHub: hashicorp/boundary LICENSE (BUSL 1.1)
- GitHub: gravitational/teleport README (licensing)
- GitHub: Teleport Community Edition license (under 100 employees and $10M revenue)
- OpenSSH 7.3 release notes: ProxyJump and -J
- NIST SP 800-207: Zero Trust Architecture