A terminal-based SSH connection manager written in Go, similar to Termius. Manage your SSH servers with an intuitive TUI interface.
- π Save SSH Connections: Store server details including host, port, username, and password
- π PEM Key Support: Add PEM private keys as text (RSA, ED25519, ECDSA, OpenSSH formats)
- π Secure Storage: Configurations saved in
~/.termius-from-walmart/config.jsonwith 0600 permissions - π€ Export Servers: Export all server configurations to JSON
- π₯ Import Servers: Import server configurations from JSON file
- π¨ Beautiful TUI: Built with Bubble Tea for a smooth terminal experience
- π Search & Filter: Quickly find servers by name
- β¨οΈ Keyboard Navigation: Efficient keyboard shortcuts
- Go 1.21 or higher
- (Optional)
sshpassfor password-based authentication
Install sshpass (optional):
# Ubuntu/Debian
sudo apt-get install sshpass
# macOS
brew install hudochenkov/sshpass/sshpass
# Fedora
sudo dnf install sshpass# Clone or create the project directory
cd termius-from-walmart
# Download dependencies
go mod download
# Build the application
go build -o termius-from-walmart main.go
# (Optional) Install to your PATH
sudo mv termius-from-walmart /usr/local/bin/./termius-from-walmart
# or if installed globally
termius-from-walmarta- Add new servere- Edit selected serverd- Delete selected serverEnter- Connect to selected serverm- Open Import/Export menu/- Filter/search serversβ/βorj/k- Navigate listqorCtrl+C- Quit
Tab/Shift+Tab- Move between fieldsβ/β- Move between fieldsp- Open PEM key multiline editor (when on PEM field)Enter- Submit (when on submit button)Esc- Cancel and return to list
Ctrl+S- Save PEM key and return to formEsc- Cancel and return to form without saving- Type normally to enter key data
β/βorj/k- Navigate optionsEnter- Select optionEsc- Back to list
When you export servers (press m then select "Export Servers"), all servers are saved to:
~/ssh-servers-export.json
To import servers, create a file at:
~/ssh-servers-import.json
[
{
"name": "Production Server",
"host": "192.168.1.100",
"port": 22,
"username": "root",
"password": "your-password",
"pem_key": ""
},
{
"name": "AWS EC2 Instance",
"host": "ec2-54-123-45-67.compute-1.amazonaws.com",
"port": 22,
"username": "ec2-user",
"password": "",
"pem_key": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEA...\n-----END RSA PRIVATE KEY-----"
},
{
"name": "Development Server",
"host": "dev.example.com",
"port": 2222,
"username": "admin",
"password": "dev-password",
"pem_key": ""
},
{
"name": "Staging Server",
"host": "staging.example.com",
"port": 22,
"username": "deploy",
"password": "",
"pem_key": ""
}
]Note: You can use either password OR pem_key, not both. Leave one empty.
For pem_key, include the entire PEM private key as text. In JSON, use \n for newlines.
- Create
~/ssh-servers-import.jsonwith your servers - Run the application
- Press
mto open menu - Select "Import Servers"
- Your servers will be added to the list
All configurations are stored in:
~/.termius-from-walmart/config.json
This file contains:
- All saved servers
- Auto-incrementing IDs for each server
- Passwords stored in plain text (use with caution)
- PEM private keys stored as text (use with caution)
Security Note: Both passwords and PEM keys are stored unencrypted. For production environments, consider using SSH agent or system keychain. The config file has 0600 permissions (owner read/write only), but the data itself is not encrypted.
If you've saved a PEM private key, the application will automatically use it for authentication.
Supported PEM formats:
- RSA:
-----BEGIN RSA PRIVATE KEY----- - OpenSSH:
-----BEGIN OPENSSH PRIVATE KEY----- - EC:
-----BEGIN EC PRIVATE KEY----- - ED25519 (recommended)
How to add PEM key:
- When adding/editing a server, navigate to PEM field
- Press
pto open the multiline editor - Paste your entire PEM key
- Press
Ctrl+Sto save - Leave password field empty
Get your PEM key text:
cat your-key.pemSee PEM_KEY_GUIDE.md for detailed instructions.
If you've saved a password, the application will use sshpass to automatically authenticate.
Leave both password and PEM fields empty and ensure your SSH keys are properly configured in ~/.ssh/.
-
Add your first server:
- Press
a - Fill in server details
- Navigate to Submit and press Enter
- Press
-
Connect to a server:
- Select server from list
- Press Enter
-
Export for backup:
- Press
m - Select "Export Servers"
- File saved to
~/ssh-servers-export.json
- Press
-
Import on another machine:
- Copy
ssh-servers-export.jsonto~/ssh-servers-import.json - Press
m - Select "Import Servers"
- Copy
Install sshpass or use SSH keys instead of passwords.
- Verify the host and port are correct
- Check that the server is accessible
- Ensure your credentials are valid
- Try connecting manually with:
ssh username@host -p port
- Verify the JSON file exists at
~/ssh-servers-import.json - Check JSON syntax is valid
- Ensure file has read permissions
.
βββ main.go # Main application code
βββ go.mod # Go module dependencies
βββ README.md # This file
- Bubble Tea - TUI framework
- Bubbles - TUI components
- Lipgloss - Style definitions
-
Password Storage: Passwords are stored in plain text in the config file. This is suitable for personal/development use but NOT recommended for production environments.
-
File Permissions: The config file is created with 0600 permissions (owner read/write only), but still contains sensitive data.
-
Best Practice: Use SSH keys instead of passwords when possible:
ssh-keygen -t ed25519 -C "[email protected]" ssh-copy-id username@hostname -
Alternative: Consider encrypting the config file or using a system keychain for password storage in production.
MIT License - Feel free to use and modify as needed.
Contributions are welcome! Feel free to submit issues or pull requests.
Potential features for future versions:
- SSH key management
- Connection history
- Port forwarding management
- SFTP file browser
- Terminal session recording
- Config encryption
- Group/folder organization
- Jump host support