Ultra-lightweight SSH management with a clean web interface
A single native binary that provides a modern web interface for managing SSH server configurations, client hosts, and key pairs. No Docker, no containers, no complexity - just drop the binary and run.
Managing SSH configurations traditionally requires editing config files manually, remembering complex syntax, and dealing with multiple tools. SSH Pilot gives you a clean web interface to handle all SSH management tasks in one place.
Need command-line only? β Use traditional SSH tools
Want visual management? β You're in the right place
Want both convenience and power? β SSH Pilot delivers
# Download and run
wget https://github.com/NtWriteCode/ssh-pilot/releases/latest/download/ssh-pilot
chmod +x ssh-pilot
# Start SSH Pilot
./ssh-pilot
# Open browser β http://localhost:8081
# Login: admin / admin (changeable in settings)
That's it. No configuration files required to get started.
- Visual Configuration - Configure SSH daemon settings through web interface
- Security Options - Port, authentication methods, user restrictions
- Config Generation - Generate and write
sshd_config
files - Service Control - Start, stop, restart SSH daemon
- Configuration Testing - Test SSH configuration before applying
- Status Monitoring - Real-time SSH daemon status and health
- Host Database - Store and manage SSH client configurations
- Config Generation - Generate SSH config entries for easy connection
- Advanced Options - Port forwarding, proxy commands, custom settings
- Config Export - Download client configurations as files
- Connection Details - Organize hosts with aliases and connection info
- Key Generation - Generate SSH key pairs (RSA, Ed25519, ECDSA)
- Key Organization - Store and organize key information
- QR Code Sharing - Generate QR codes for easy key sharing
- Multiple Types - Support for various key sizes and comments
- Secure Storage - Keys stored in standard SSH locations
- Active Connections - View current SSH connections
- User Sessions - Monitor connected users and sessions
- Health Checks - SSH daemon status and health monitoring
- Real-time Stats - Connection statistics and usage data
- Linux, macOS, or Windows system
- SSH daemon installed (
openssh-server
) - Appropriate permissions for SSH configuration management
- systemctl for service management (Linux)
No additional dependencies, databases, or services required.
# Intel/AMD (x64)
wget https://github.com/NtWriteCode/ssh-pilot/releases/latest/download/ssh-pilot-linux-amd64 -O ssh-pilot
# ARM64 (Pi 4, Apple Silicon servers)
wget https://github.com/NtWriteCode/ssh-pilot/releases/latest/download/ssh-pilot-linux-arm64 -O ssh-pilot
# ARM (Pi Zero, older Pi)
wget https://github.com/NtWriteCode/ssh-pilot/releases/latest/download/ssh-pilot-linux-arm -O ssh-pilot
# macOS Intel
wget https://github.com/NtWriteCode/ssh-pilot/releases/latest/download/ssh-pilot-darwin-amd64 -O ssh-pilot
# macOS Apple Silicon
wget https://github.com/NtWriteCode/ssh-pilot/releases/latest/download/ssh-pilot-darwin-arm64 -O ssh-pilot
chmod +x ssh-pilot
git clone https://github.com/NtWriteCode/ssh-pilot.git
cd ssh-pilot
go build -o ssh-pilot .
-
Access Dashboard β Navigate to Server Configuration
-
Configure Settings:
- SSH port and web interface port
- Authentication methods (password, public key)
- User restrictions (allow/deny users)
- Security settings (strict modes, timeouts)
- Advanced options (forwarding, logging)
-
Apply Changes:
- Write Config β Generate
sshd_config
file - Test Config β Validate settings before applying
- Restart SSH β Apply changes to running service
- Write Config β Generate
-
Add Host β Click "Add Client Host" from dashboard
-
Configure Connection:
- Host alias and hostname/IP address
- Username and port configuration
- SSH key file path specification
- Advanced options (forwarding, compression)
-
Use Configuration:
- View Config β See generated SSH configuration
- Download Config β Save as
.ssh/config
file
-
Generate Keys β Click "Add Key Pair" from dashboard
-
Choose Key Type:
- Ed25519 (recommended) - Modern, secure, fast
- RSA (compatible) - Widely supported legacy option
- ECDSA (performance) - Good performance balance
-
Key Management:
- Generated keys stored in
~/.ssh/
directory - QR Code feature for easy mobile sharing
- Key information organized and searchable
- Generated keys stored in
- Config file:
ssh-pilot.json
(auto-created) - SSH configs: Generated in standard SSH locations
- Web port:
8081
(usePORT=8082
to change) - Session timeout:
60 minutes
(configurable in web interface)
SSH Pilot checks for these tools at startup:
ssh
- SSH clientsshd
- SSH daemonssh-keygen
- Key generationsystemctl
- Service management
For local network use. This tool manages SSH configurations and should be treated securely.
- β Bcrypt password hashing
- β Session-based authentication
- β Rate limiting (5 attempts = 15min block)
- β Secure cookie flags
- β Input validation and XSS protection
- β Configuration backups before changes
- Change default password immediately after first login
- Use on trusted networks only (localhost/LAN)
- Run with appropriate permissions (not root unless necessary)
- Review configurations before applying to production
- Monitor SSH logs for suspicious activity
- Keep SSH keys secure and rotate them regularly
Missing SSH Binaries:
# Ubuntu/Debian
sudo apt install openssh-server openssh-client
# CentOS/RHEL
sudo yum install openssh-server openssh-clients
Permission Denied Errors:
# Run with appropriate permissions for SSH config management
sudo ./ssh-pilot
# Or ensure user has write access to SSH directories
Configuration Test Failed:
- Check SSH configuration syntax in generated files
- Verify file paths and permissions are correct
- Review SSH daemon logs:
journalctl -u ssh
Web Interface Not Accessible:
# Check if port is available
netstat -tlnp | grep 8081
# Try different port
PORT=8082 ./ssh-pilot
# Check firewall settings
sudo ufw status
# Run with verbose output
./ssh-pilot 2>&1 | tee ssh-pilot.log
# Check SSH daemon logs
sudo journalctl -u ssh -f
# Monitor SSH connections
sudo journalctl -u ssh | grep "Accepted\|Failed"
ssh-pilot (native binary)
βββ Web Interface (HTML + vanilla JS)
βββ Session Auth (secure cookies)
βββ SSH Management (sshd integration)
βββ Config Generator (sshd_config + ssh_config)
βββ Key Management (ssh-keygen integration)
βββ Service Control (systemctl integration)
Files:
main.go
- Application entry point and setupconfig.go
- Configuration management and persistencessh.go
- SSH daemon operations and key managementhandlers.go
- HTTP request handlers for web interfacetemplates.go
- HTML templates for web interfaceqr.go
- QR code generation for key sharing
SSH Pilot provides a simple JSON API when running in web mode:
GET /api
- Get current configuration (sanitized)GET /api/stats
- Get SSH statistics and connection infoPOST /ssh-control
- Control SSH daemon (start/stop/restart)
- Multi-server management
- SSH certificate support
- Configuration templates
- Bulk operations
- Integration with cloud providers
- Advanced monitoring dashboards
This project prioritizes simplicity and reliability. PRs welcome for:
- Bug fixes and security improvements
- UI/UX enhancements
- Performance optimizations
- Documentation improvements
Please avoid adding:
- Heavy dependencies or complex frameworks
- Enterprise features that complicate core use cases
- Features that break the "single binary" principle
MIT License - use it however you want.
β Star this repo if you find it useful!
Built with β€οΈ for people who want simple, reliable SSH management without the complexity.