Reach private databases through SSH, with verified host keys
Reach private MySQL, Redis, MongoDB, Kafka, ClickHouse and Kubernetes endpoints through a verified single-hop SSH tunnel without opening a local port.

What it is
Most production databases and Kubernetes API servers aren’t on the public internet. In New connection or Edit connection, tick Connect through SSH tunnel and DevOpsPad reaches the target through a bastion host. This works for every engine: MySQL, Redis, MongoDB, Kafka, ClickHouse, Kubernetes and K3s.
Enter the database host and port as seen from the SSH server — localhost means the bastion’s own loopback. For Kubernetes and K3s, the API server address comes from the selected kubeconfig context.
How it works
- Authentication. A private key file (including encrypted keys with a passphrase, and
~/paths), an SSH password, or a running SSH agent viaSSH_AUTH_SOCK. - Host key verification. Your
~/.ssh/known_hosts, another known_hosts file you choose, or aSHA256:…fingerprint from your administrator. Unknown or changed keys fail. Nothing is trusted on first use. - No local listener. Each operation opens a short-lived SSH session, forwards over SSH TCP channels inside the app, and closes the session when it finishes or is cancelled. No port is opened on your machine.
- No silent fallback. If SSH fails, the connection fails; it never retries directly.
- TLS still applies. Database hostname verification is kept, and Kubernetes keeps the kubeconfig’s CA, client certificates and TLS server name. DNS for the target is resolved on the SSH server.
- Separate secrets. Database passwords, SSH passwords and key passphrases each get their own entry in the OS keychain. Private keys stay in their files.
Test connection authenticates to SSH and then runs the engine’s real connectivity check, so a green result means the whole path works.
Kafka and Kubernetes details
Kafka clients connect to the brokers’ advertised addresses after the first request. Those connections also go through the tunnel, so the advertised addresses must be reachable from the SSH server. For Kubernetes, context and namespace discovery, resource details, events and Pod logs all use the same tunnel.
Limits
- Single hop only: no ProxyJump, ProxyCommand or OpenSSH config aliases.
- No keyboard-interactive authentication.
- SSH agent support uses the Unix socket in
SSH_AUTH_SOCK. If the desktop app can’t see it, use a key file or password. - HTTP proxy environment variables and kubeconfig proxy URLs are bypassed for tunneled requests.
See SSH troubleshooting for common errors, and the engineering note on tunnels without a local listener.
Help articles
Connect through an SSH tunnel
Reach private MySQL, Redis, MongoDB, Kafka, ClickHouse and Kubernetes endpoints through a bastion with DevOpsPad's built-in single-hop SSH tunnel.
SSH private key authentication
Use an SSH private key, including passphrase-protected keys, for DevOpsPad SSH tunnels. Supported paths, where the passphrase is stored, and common errors.
Use the SSH Agent for tunnels
Authenticate DevOpsPad SSH tunnels through the agent at SSH_AUTH_SOCK so keys stay in the agent. macOS setup, and why the agent may be missing.
Verify SSH host keys
DevOpsPad only trusts SSH servers listed in known_hosts or matching a SHA256 fingerprint you provide. How to set up each option and fix verification errors.
Troubleshoot SSH tunnel errors
Fix DevOpsPad SSH tunnel errors - unreachable bastions, failed authentication, forwarding, Kafka advertised listeners, TLS names and unsupported setups.
Frequently asked questions
Does DevOpsPad trust a new SSH host key automatically?
No. The host key must match your known_hosts file or a SHA256 fingerprint you enter. Unknown or changed keys fail the connection.
Can I use ProxyJump or my ~/.ssh/config aliases?
Not yet. Tunnels are single-hop, and OpenSSH config aliases, ProxyCommand and ProxyJump are not implemented. Enter the bastion host directly.
Does DevOpsPad open a local port for the tunnel?
No. Traffic goes through SSH channels inside the app, so no other program on your machine can use the tunnel.