dalaolala/webssh

By dalaolala

•Updated 4 months ago

Image
Networking
Developer tools
0

2.1K

dalaolala/webssh repository overview

⁠WebSSH - A Complete Web-Based SSH & SFTP Terminal

WebSSH is a powerful, modern, and highly secure web-based SSH terminal and SFTP file manager. Built with Vue 3, Node.js, and xterm.js, it offers a seamless command-line experience directly from your browser, eliminating the need to install any local SSH clients.

⁠✨ Highlighted Features

  • šŸ–„ļø Full-Featured Web Terminal: Provides a rich terminal experience powered by xterm.js. Supports resizing, copy/paste, and robust command execution.
  • šŸ”’ Enterprise-Grade Security:
    • AES-256 Encryption: All server credentials saved on the backend are strongly encrypted.
    • RSA + AES Hybrid Encryption: Real-time transmission of sensitive data (like passwords and private keys) is secured via an asymmetric/symmetric hybrid encryption pipeline, preventing man-in-the-middle packet sniffing.
  • ⚔ "Local Mode" (Quick Connect): Connect to any server instantly without creating an account or saving data to the backend database. SSH configuration and connection history are stored strictly in your browser's local storage.
  • šŸ“‚ Integrated SFTP File Manager: Browse, upload, download, rename, and delete files with ease. Includes an advanced Online Code Editor (Monaco Editor) for editing files directly in the browser!
  • šŸ—‚ļø Multi-Tab Architecture: Open and manage multiple independent SSH terminal and SFTP sessions concurrently in a modern tabbed layout.
  • šŸ”„ History Import & Export: Easily backup and migrate your "Local Mode" connection history between devices using AES-encrypted export files.

ā šŸš€ Quick Start (Docker)

Deploying WebSSH using Docker is the fastest and recommended way. You will need to mount the ports and inject environment variables for the database and encryption keys.

docker run -d \
  --name webssh-app \
  -p 3000:3000 \
  -e DB_HOST=your-mysql-host \
  -e DB_PORT=3306 \
  -e DB_USER=webssh_user \
  -e DB_PASSWORD=your-db-password \
  -e DB_NAME=webssh \
  -e JWT_SECRET=your-jwt-secret \
  -e ENCRYPTION_KEY=your-32-byte-encryption-key \
  dalaolala/webssh:latest

šŸ”‘ Important Environment Variables JWT_SECRET: A strong secret key used for generating user authentication tokens. You can easily generate one using: openssl rand -base64 32 ENCRYPTION_KEY: A strictly 32-byte key used to encrypt connection credentials in the database. Generate one using: openssl rand -hex 16 (Note: If you plan to use the standard database mode to save servers permanently, you will need an external MySQL server and import the initialization SQL script into it).

šŸ’” How to Use "Local Mode" (No Server Configuration Required) Don't want to setup a MySQL database? No problem! Once the container is running and you log in, navigate to the Local Mode page. From there, you can enter any SSH details directly. Your configurations and sessions will be entirely handled by your web browser, communicating with the Node.js backend purely as a stateless stateless proxy.

šŸ“š Tech Stack Frontend: Vue 3, Vite, Element Plus, xterm.js, Monaco Editor Backend: Node.js, Express, Socket.IO, ssh2 Security: crypto-js, node-forge (RSA-OAEP, AES-256-CBC) For source code, issues, and detailed manual deployment instructions, please visit our GitHub Repository⁠.

Tag summary

Content type

Image

Digest

sha256:7be1e1e29…

Size

51.2 MB

Last updated

4 months ago

docker pull dalaolala/webssh