Connection Types
Direct Connection
Simple SSH connection directly to the target host.Jump Host (Single Hop)
Connect through one intermediate server.Multi-Hop Jump Chain
Connect through multiple intermediate servers.Proxy Connection
Route connection through an HTTP or SOCKS5 proxy.Proxy + Jump Host
Combine proxy and jump host for maximum flexibility.Host Chain Configuration
Netcatty uses thehostChain field to define jump host sequences.
Data Structure
Example
Setting Up Jump Hosts
Method 1: Host Details Panel
- Open the host you want to connect to
- Scroll to Jump Hosts section
- Click Add Jump Host
- Select the intermediate server from the dropdown
- For multi-hop:
- Click Add Jump Host again
- Select the next server in the chain
- Order matters: first added = first hop
- Click Save
Method 2: During Host Creation
- Click New Host
- Fill in target server details
- In Jump Hosts section, add intermediaries
- Order from left to right = connection order
- Click Create
Method 3: SSH Config Import
Import existing SSH config with ProxyJump:hostChain.
Proxy Configuration
Netcatty supports HTTP CONNECT and SOCKS5 proxies.Data Structure
HTTP Proxy
Used for HTTP CONNECT tunneling:- Connect to proxy.company.com:8080
- Send HTTP CONNECT request for server.example.com:22
- Proxy establishes tunnel
- SSH connection proceeds through tunnel
SOCKS5 Proxy
Used for SOCKS5 tunneling:- Connect to SOCKS5 proxy
- Perform SOCKS5 handshake
- Request connection to target through proxy
- SSH connection proceeds through SOCKS5 tunnel
Setting Up Proxies in GUI
- Open Host Details for your target server
- Scroll to Proxy section
- Click Enable Proxy
- Select proxy type: HTTP or SOCKS5
- Enter proxy details:
- Host: Proxy server address
- Port: Proxy server port
- Username (optional): Proxy authentication username
- Password (optional): Proxy authentication password
- Click Save
Common Scenarios
Scenario 1: AWS Bastion Host
Network:-
Create bastion host entry:
-
Create private server entry:
Scenario 2: Corporate Network with DMZ
Network:-
Bastion in DMZ:
-
Internal server:
Scenario 3: Multi-Tier Jump (3 Hops)
Network:-
Public bastion:
-
Security gateway:
-
Production server:
Scenario 4: Corporate Proxy + Bastion
Network:-
Cloud bastion (with proxy):
-
Cloud VM (through bastion):
Scenario 5: SOCKS5 Proxy for Remote Access
Network:Authentication Through Jumps
Jump Host Authentication
Each jump host in the chain uses its own authentication:- SSH Key: Specify
identityFileIdfor each jump host - Password: Enter password for each jump host when connecting
- Agent Forwarding: Enable on jump hosts to forward your local SSH agent
Example: Different Keys per Hop
- Netcatty connects to bastion using personal-key-id
- Once bastion connection succeeds, Netcatty connects to production using deploy-key-id
- Both keys are loaded from Netcatty’s keychain
SSH Agent Forwarding
Enable agent forwarding to use your local SSH keys on jump hosts:- Open jump host details
- Enable Agent Forwarding
- Jump host can now use your local keys for onward connections
Circular Reference Detection
Netcatty prevents infinite loops in jump host chains. Example of circular reference:- During SSH config import
- When saving host details
- Before initiating connection
Connection Troubleshooting
Connection Timeout at Jump Host
Symptoms: Connection hangs when reaching jump host Possible causes:- Jump host is down or unreachable
- Firewall blocking SSH port
- Wrong hostname/IP for jump host
- Authentication failed on jump host
- Test jump host directly: Connect without target server
- Check jump host logs:
sudo journalctl -u sshd -f - Verify network path:
pingortracerouteto jump host - Try from command line:
ssh -J jumphost targethost
Authentication Failed on Target
Symptoms: Jump host connects, but target authentication fails Possible causes:- Wrong username for target server
- SSH key not accepted by target
- Agent forwarding not enabled
- Target server AllowUsers/DenyUsers restrictions
- Test target from jump host: SSH to jump host, then SSH to target manually
- Check target’s authorized_keys:
cat ~/.ssh/authorized_keys - Enable agent forwarding on jump host
- Check target’s sshd_config for AllowUsers
Proxy Connection Failed
Symptoms: Cannot establish proxy connection Possible causes:- Proxy server down or unreachable
- Wrong proxy host/port
- Proxy authentication required but not provided
- Proxy doesn’t support CONNECT method (HTTP) or SOCKS5
- Test proxy:
curl -x http://proxy:8080 http://example.com - Verify proxy type: Some proxies only support HTTP, not CONNECT
- Check proxy logs if accessible
- Try direct connection without proxy to isolate issue
Multi-Hop Performance Issues
Symptoms: Connection works but is very slow Possible causes:- Network latency compounded across hops
- Jump hosts under high load
- Bandwidth limitations
- Reduce number of hops if possible
- Use faster jump hosts
- Enable SSH compression: Add to SSH config or connection options
- Consider VPN instead of multiple SSH hops
Best Practices
Security
- Dedicated Jump Hosts: Use hardened, minimal-install servers as jump hosts
- Audit Logs: Enable detailed logging on jump hosts:
LogLevel VERBOSEin sshd_config - Principle of Least Privilege: Jump host users should only have access needed for forwarding
- Key Rotation: Regularly rotate SSH keys used for jump host access
- MFA: Enable multi-factor authentication on jump hosts if possible
- Disable Direct Root: Prevent root login on jump hosts:
PermitRootLogin no
Performance
- Connection Multiplexing: SSH will reuse connections when possible
- Persistent Connections: Keep jump host connections alive with
ServerAliveInterval - Geographic Proximity: Place jump hosts near target servers to minimize latency
- Limit Hops: Avoid more than 2-3 hops when possible
Management
- Descriptive Labels: Use clear names like “AWS Bastion (us-east-1)” instead of “Jump 1”
- Document Network Topology: Keep a diagram of your jump host infrastructure
- Test Regularly: Verify jump host chains still work, especially after network changes
- Monitor Jump Hosts: Track connection counts, failed auth attempts, system resources
Organization
- Group by Jump Host: Create groups for servers sharing the same bastion
- Naming Convention: Use prefixes like
[via-bastion]in host labels - Tags: Tag servers with their jump host for easy filtering
SSH Config Integration
Netcatty’s host chains map to OpenSSH ProxyJump: Netcatty:Alternatives to Jump Hosts
VPN
Instead of SSH jump hosts, use a VPN: Pros:- All servers appear on local network
- No need for complex jump chains
- Works for non-SSH protocols
- Requires VPN software and configuration
- May be blocked by corporate networks
- Potential security concerns with full network access
Port Forwarding
Use SSH local port forwarding:Tailscale / Zerotier
Mesh VPN solutions for seamless private networking:- Direct peer-to-peer connections
- No central bastion needed
- Works across NAT/firewalls
