A modern, secure web-based SSH terminal built with Next.js and shadcn/ui. Connect to remote servers directly from your browser with a full-featured terminal interface.
- Password and private key authentication
- Encrypted credential handling with AES encryption
- Rate limiting and security validation
- Session management with automatic cleanup
- SSH key generation, import, and export
- Certificate-based authentication support
- Real-time terminal emulation using xterm.js
- Multiple terminal tabs with session switching
- Support for colors, cursor positioning, and text formatting
- Customizable themes and font settings
- Search functionality within terminal output
- Keyboard shortcuts and hotkeys
- Full-screen terminal mode
- Terminal bell notifications (visual and audio)
- SFTP file browser with directory navigation
- Drag-and-drop file uploads
- File download capabilities
- Transfer progress indicators with speed monitoring
- File operations (create, delete, rename directories)
- Batch file operations
- Connection profiles and bookmarks
- Quick connect from recent connections
- Favorite connections with tags
- Connection history tracking
- Profile groups and organization
- Import/export connection profiles
- Multiple built-in terminal themes (Dark, Light, Monokai, Solarized)
- Custom theme creation and editing
- Font family, size, and line height controls
- Cursor style and blinking options
- Scrollback buffer configuration
- Terminal behavior customization
- Customizable keyboard shortcuts
- Copy/paste with Ctrl+C/Ctrl+V
- Tab navigation (Ctrl+T, Ctrl+W, Ctrl+Tab)
- Font size controls (Ctrl+Plus/Minus/0)
- Terminal clearing (Ctrl+L)
- Context menus and right-click actions
- Real-time connection monitoring
- Session statistics and performance metrics
- Connection success/failure tracking
- Usage analytics and reporting
- SSH key usage tracking
- Audit logs for security compliance
- Session timeout warnings
- IP whitelisting and blacklisting capabilities
- Two-factor authentication support
- Encrypted local storage
- Secure credential management
- Rate limiting and brute force protection
- Node.js 18+
- pnpm (recommended) or npm
- Clone the repository:
git clone <repository-url>
cd simple-web-terminal
- Install dependencies:
pnpm install
- Start the development server:
pnpm dev
- Open http://localhost:3000 in your browser.
-
Fill in connection details:
- Hostname: The server's IP address or domain name
- Port: SSH port (default: 22)
- Username: Your username on the remote server
-
Choose authentication method:
- Password: Enter your password
- Private Key: Paste your private key (supports encrypted keys with passphrase)
-
Click Connect to establish the SSH connection
- Full terminal emulation: Supports all standard terminal operations
- Copy/Paste: Use Ctrl+C/Ctrl+V (or Cmd+C/Cmd+V on Mac)
- Resize: Terminal automatically adjusts to window size
- Colors and formatting: Full support for ANSI colors and text formatting
- Next.js 15: React framework with App Router
- shadcn/ui: Modern UI component library
- xterm.js: Terminal emulation
- Socket.IO: Real-time communication
- TypeScript: Type safety throughout
- Next.js API Routes: RESTful API endpoints
- Socket.IO: WebSocket server for real-time terminal communication
- node-ssh: SSH client library
- Custom Security Layer: Encryption, validation, and rate limiting
- Use HTTPS in production
- Set strong encryption keys
- Configure proper firewall rules
- Monitor logs for suspicious activity
- Regularly update dependencies
- Use private key authentication when possible
- Implement proper access controls
- Monitor session activity
- Set appropriate session timeouts
- Use strong passwords and keys
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the MIT License.