Authentication Methods
Netcatty supports multiple SSH authentication methods, defined indomain/models.ts:116:
- Public key (recommended) - RSA, ECDSA, ED25519
- Password - Username/password authentication
- Certificate - SSH certificate-based authentication
- Agent forwarding - Use SSH agent for key management
Public Key Authentication
Public key authentication is the most secure method.Supported Key Types
- ED25519 - Fastest, most secure (256-bit security)
- ECDSA - Good security, widely supported (256/384/521-bit)
- RSA - Maximum compatibility (2048/4096-bit minimum)
Default Key Discovery
Netcatty automatically searches for keys in~/.ssh/ in this order:
id_ed25519(preferred)id_ecdsaid_rsa
electron/bridges/sshAuthHelper.cjs:73-89.
Encrypted Keys
Netcatty detects and handles encrypted private keys:- PKCS#8 format:
-----BEGIN ENCRYPTED PRIVATE KEY----- - Legacy PEM:
Proc-Type:+ENCRYPTED - OpenSSH format: Cipher name check in key header
PassphraseModal (components/PassphraseModal.tsx:1).
SSH Agent
Netcatty supports SSH agent for centralized key management.Agent Socket Detection
Using SSH Agent
macOS:Agent Forwarding
Agent forwarding allows you to use local SSH keys on remote servers. Enable per host:- Open host details
- Enable Agent Forwarding in Advanced Settings
- Save configuration
- Git operations on remote servers
- Hopping through bastion hosts
- Accessing other servers from jump hosts
Credential Storage
Netcatty stores credentials in different ways depending on the platform and configuration.Local Storage
By default, credentials are stored in localStorage (encrypted on disk by the OS):Keychain Integration
For enhanced security, Netcatty integrates with system keychains:- macOS: Keychain Access
- Windows: Windows Credential Manager
- Linux: Secret Service API (GNOME Keyring, KWallet)
electron/bridges/credentialBridge.cjs.
Password Storage Options
Per-host password storage is configurable:SSH Key Passphrase Storage
electron/bridges/passphraseHandler.cjs.
Known Hosts
Netcatty implements SSH host key verification to prevent man-in-the-middle attacks.Host Key Verification
On first connection, Netcatty:- Receives the server’s public host key
- Displays key fingerprint in a confirmation dialog
- Asks user to verify and accept
- Stores accepted key in known hosts database
Known Hosts Storage
Host Key Changed
If a host key changes, Netcatty displays a warning: TheKnownHostConfirmDialog component (components/KnownHostConfirmDialog.tsx:1) handles this scenario.
Managing Known Hosts
View and manage known hosts in Vault > Known Hosts:- View all known host keys and fingerprints
- Remove outdated or incorrect entries
- Export/import known hosts
- Convert discovered hosts to managed hosts
components/KnownHostsManager.tsx.
System known_hosts Integration
Netcatty can import entries from~/.ssh/known_hosts (system SSH known hosts file) for compatibility with command-line SSH.
Proxy and Jump Hosts
Proxy Support
Netcatty supports HTTP and SOCKS5 proxies:electron/bridges/proxyUtils.cjs.
Jump Host / Bastion
Connect through intermediate hosts:- Accessing private networks through bastion hosts
- Multi-hop SSH connections
- Compliance requirements (audited jump servers)
- Create host entries for jump host and target
- In target host, configure Host Chain
- Add jump host ID(s) in order
- Netcatty establishes connections sequentially
Connection Logging
Netcatty logs all connection attempts for security auditing:components/ConnectionLogsManager.tsx.
Session Security
Keepalive
Prevent idle disconnections and detect connection loss:- 0 - Disable (use SSH library defaults)
- 30 - Standard networks
- 60 - Stable connections
- 300 - Minimize traffic
Session Recording
Netcatty can automatically save terminal sessions:- Settings > Terminal > Session Logs
- Enable auto-save
- Choose directory and format
- Logs are saved per session
electron/bridges/sessionLogsBridge.cjs.
Environment Variables
Securely pass environment variables to SSH sessions:Security Hardening Checklist
Authentication
Authentication
- Use ED25519 or ECDSA keys (not RSA unless required)
- Use 2048-bit minimum for RSA keys (4096-bit recommended)
- Encrypt private keys with strong passphrases
- Use SSH agent instead of storing passphrases
- Disable password authentication on servers (key-only)
- Use certificate authentication for organizations
Host Verification
Host Verification
- Always verify host key fingerprints on first connection
- Investigate any host key changed warnings
- Regularly review known hosts
- Remove entries for decommissioned servers
- Document expected host key changes (server reinstalls)
Credentials
Credentials
- Enable system keychain integration
- Don’t save passwords for sensitive systems
- Use Identities feature for shared credentials
- Rotate keys periodically
- Use unique keys per environment (dev/staging/prod)
Network Security
Network Security
- Use VPN for untrusted networks
- Use bastion/jump hosts for production access
- Enable connection logging
- Use Mosh for untrusted networks (not Telnet)
- Isolate legacy equipment requiring weak algorithms
Audit and Compliance
Audit and Compliance
- Enable session logging for compliance
- Review connection logs periodically
- Export/backup known hosts database
- Document jump host topology
- Test disaster recovery (key backup/restore)
