SSH engineering with wunderbar feeling!
Transform SSH chaos into organized infrastructure bliss. German precision meets developer happiness.
SSH configuration shouldn't be a chore. Whether you're managing 3 servers or 30, ssh-wunderbar makes it wunderbar:
- π Smart Key Management - Automatic key type detection (ED25519/RSA/ECDSA)
- π JSON-Driven Config - Your infrastructure as code
- π Modern CLI - Built like the tools you love (Docker, Git, npm)
- ποΈ Atomic Operations - Everything works or nothing changes
- π₯ Team Ready - Share configs, onboard developers instantly
- π Key Rotation - Security best practices made simple
# Get ssh-wunderbar
git clone https://github.com/your-username/ssh-wunderbar.git
cd ssh-wunderbar
# Interactive setup - choose what you want
./ssh-wunderbar
# Or directly setup a service
./ssh-wunderbar githubThat's it! SSH management, made wunderbar! π―
# Interactive menu
./ssh-wunderbar
# From configuration
./ssh-wunderbar github # GitHub SSH
./ssh-wunderbar myserver # Your custom server
# Non-interactive setup
./ssh-wunderbar webserver 192.168.1.100 deploy 22
# Service management
./ssh-wunderbar --add-service prod 10.0.0.1 root 22 "Production server"
./ssh-wunderbar --setup-all # Configure everything
./ssh-wunderbar --list # Show all services- Auto-Detection: Recognizes ED25519, RSA, ECDSA, DSA key types
- Smart Naming:
server_ed25519,server_rsa- always know what you have - Key Reuse: Use existing keys or generate new ones
- Clipboard Import: Paste keys directly from other systems
{
"services": {
"production": {
"hostname": "prod.company.com",
"user": "deploy",
"port": 22,
"description": "Production server"
},
"staging": {
"hostname": "staging.company.com",
"user": "deploy",
"port": 2222,
"description": "Staging environment"
}
}
}# Key rotation with cleanup
./ssh-wunderbar --rotate-keys production
# Remove services
./ssh-wunderbar --remove-service old-server
# Setup entire infrastructure
./ssh-wunderbar --setup-allDefine your servers in services.json or add them interactively.
Choose from existing keys or generate new ones. ssh-wunderbar detects key types automatically.
Keys are deployed via ssh-copy-id with connection testing.
Clean, organized ~/.ssh/config entries with proper aliases.
ssh myserver # Instead of ssh user@long-hostname.company.com# Quick server access setup
./ssh-wunderbar --add-service homelab 192.168.1.50 pi 22
./ssh-wunderbar homelab
# Now: ssh homelab # Share your services.json with the team
git clone company-infrastructure-config
./ssh-wunderbar --setup-all
# Entire team has identical SSH access{
"services": {
"production-web": {"hostname": "web.prod.company.com", "user": "deploy"},
"production-db": {"hostname": "db.prod.company.com", "user": "postgres"},
"staging-web": {"hostname": "web.staging.company.com", "user": "deploy"}
}
}Perfect for managing multiple Raspberry Pis, NAS systems, and home servers.
git clone https://github.com/your-username/ssh-wunderbar.git
cd ssh-wunderbar
./ssh-wunderbar --helpcurl -O https://raw.githubusercontent.com/your-username/ssh-wunderbar/main/ssh-wunderbar
chmod +x ssh-wunderbar
./ssh-wunderbar --help# After cloning/downloading
echo 'export PATH="$PATH:/path/to/ssh-wunderbar"' >> ~/.zshrc
source ~/.zshrc
ssh-wunderbar --helpSafe testing without modifying your real SSH configuration!
# Test without cleaning previous results
./test.sh myserver
# Test with clean slate
./test.sh --clean myserver
# Add and test service
./test.sh --add-service testbox 192.168.1.100 pi 22
./test.sh testbox- β
Isolated Environment: All files in
test-output/ - β Mock SSH Keys: Generated for testing (not real keys)
- β Simulated Deployment: No actual server connections
- β Interactive Testing: You control all inputs
- β Operations Log: Complete audit trail
- β Preserved Results: Multiple tests accumulate
test-output/
βββ operations.log # Complete test log
βββ .ssh/
βββ config # Generated SSH config
βββ server_ed25519 # Mock private key
βββ server_ed25519.pub # Mock public key{
"version": "1.0",
"services": {
"github": {
"type": "git",
"hostname": "github.com",
"user": "git",
"port": 22,
"description": "GitHub SSH authentication",
"readonly": true
}
},
"settings": {
"default_key_type": "ed25519",
"auto_backup_config": true,
"cleanup_old_keys": false,
"key_rotation_days": 365
}
}# Interactive
./ssh-wunderbar
# β Choose "Add new service"
# Command line
./ssh-wunderbar --add-service myserver 192.168.1.100 user 22 "My server"
# Manual editing
# Edit services.json and add your server definitions- Automatic Backups: SSH configs backed up before changes
- Key Rotation: Generate new keys and clean up old ones
- Atomic Operations: Changes are all-or-nothing
- Permission Management: Proper file permissions set automatically
- Connection Testing: Verify access before marking as complete
# Make sure script is executable
chmod +x ssh-wunderbar
# Check path if installed globally
which ssh-wunderbar
echo $PATH# Check key format
cat your-private-key | head -1
# Should show: -----BEGIN OPENSSH PRIVATE KEY----- or similar
# Verify key is valid
ssh-keygen -l -f your-private-key# Test direct connection first
ssh user@hostname
# Check SSH config
./ssh-wunderbar --list
# Verify key deployment
ssh-copy-id -i ~/.ssh/server_ed25519.pub user@hostname# ssh-wunderbar requires jq for JSON parsing
brew install jq # macOS
apt install jq # Ubuntu/Debian
yum install jq # RHEL/CentOSWe love contributions! ssh-wunderbar is built with wunderbar community spirit.
git clone https://github.com/your-username/ssh-wunderbar.git
cd ssh-wunderbar
# Test your changes
./ssh-wunderbar --help
# Run with debug
bash -x ./ssh-wunderbar --list- π§ͺ Test thoroughly - SSH access is critical
- π Document changes - Keep README updated
- π― Focus on UX - Make it more wunderbar
- π Security first - Never compromise on safety
MIT License - feel free to use, modify, and distribute!
Complex infrastructure shouldn't require complex tools. One command should do what used to take hours.
Tools should bring joy, not frustration. Every interaction should feel smooth and delightful.
Precision, reliability, and attention to detail. Built to work correctly every time.
Great tools are built by great communities. Your feedback makes ssh-wunderbar better.
Inspired by the amazing DevOps community and the need for better SSH management tools.
Built with β€οΈ for developers who value their time and sanity.
If ssh-wunderbar made your SSH management wunderbar, consider starring the repo! β
SSH engineering with wunderbar feeling! π©πͺβ‘
Ready to make your SSH setup wunderbar?
git clone https://github.com/your-username/ssh-wunderbar.git
cd ssh-wunderbar
./ssh-wunderbarWunderbar awaits! ππ