All Projects → leshniak → httpsh

leshniak / httpsh

Licence: MIT license
Secure shell in your browser

Programming Languages

shell
77523 projects

Projects that are alternatives of or similar to httpsh

Ttyd
Share your terminal over the web
Stars: ✭ 4,030 (+14292.86%)
Mutual labels:  xterm, ttyd
Lsix
Like "ls", but for images. Shows thumbnails in terminal using sixel graphics.
Stars: ✭ 2,635 (+9310.71%)
Mutual labels:  xterm
twilight-commander
A simple console file manager.
Stars: ✭ 16 (-42.86%)
Mutual labels:  xterm
local-echo
A local-echo controller for xterm.js
Stars: ✭ 96 (+242.86%)
Mutual labels:  xterm
blessed-xterm
XTerm Widget for Blessed Curses Environment
Stars: ✭ 37 (+32.14%)
Mutual labels:  xterm
Wetty
Terminal in browser over http/https. (Ajaxterm/Anyterm alternative, but much better)
Stars: ✭ 3,076 (+10885.71%)
Mutual labels:  xterm
tempus-themes
[Mirror] Tempus is a collection of themes for Vim, text editors, and terminal emulators that are compliant at the very least with the WCAG AA accessibility standard for colour contrast
Stars: ✭ 48 (+71.43%)
Mutual labels:  xterm
godot-xterm
Terminal emulator for the Godot game engine.
Stars: ✭ 61 (+117.86%)
Mutual labels:  xterm
Aminal
🌘 Darktile is a GPU rendered terminal emulator designed for tiling window managers.
Stars: ✭ 2,663 (+9410.71%)
Mutual labels:  xterm
Termination
Integrated terminal for Atom. Looks like terminal-plus, acts like your native terminal (except every other Friday). Looking for collaborators! :-)
Stars: ✭ 83 (+196.43%)
Mutual labels:  xterm
xm2cloud term
powerful webssh that developed with django, channels, xterm,ioloop
Stars: ✭ 17 (-39.29%)
Mutual labels:  xterm
webterm
web terminal based on xterm.js in rust
Stars: ✭ 20 (-28.57%)
Mutual labels:  xterm
darktile
🌘 Darktile is a GPU rendered terminal emulator designed for tiling window managers.
Stars: ✭ 2,694 (+9521.43%)
Mutual labels:  xterm
Offensive-Reverse-Shell-Cheat-Sheet
Offensive Reverse Shell (Cheat Sheet)
Stars: ✭ 138 (+392.86%)
Mutual labels:  xterm
sshbg
Change terminal background when SSH'ing (on specific terminals)
Stars: ✭ 45 (+60.71%)
Mutual labels:  xterm
wcwidth-icons
Support fonts with double-width icons in xterm/rxvt-unicode/zsh/vim/…
Stars: ✭ 36 (+28.57%)
Mutual labels:  xterm
ng-terminal
NgTerminal is a terminal component on Angular 12. the Ivy distribution's released from v5.0.0.
Stars: ✭ 87 (+210.71%)
Mutual labels:  xterm
python-x256
Find the nearest xterm 256 color index for an RGB.
Stars: ✭ 22 (-21.43%)
Mutual labels:  xterm
django-webssh
django + django_channles 实现的 webssh
Stars: ✭ 71 (+153.57%)
Mutual labels:  xterm
Xterm.js
A terminal for the web
Stars: ✭ 12,019 (+42825%)
Mutual labels:  xterm

httpsh 🔒🐚 – secure shell in your browser

A bunch of scripts and configs that allows to expose a shell via HTTPS.

httpsh_screenshot

Project requirements

  • works as a system service
  • the service fulfills the principle of minimal privilege (can't simply use /bin/login as it requires root privileges)
  • exposes a web client with the user's shell
  • supports password authentication
  • has an optional protection against brute force attacks
  • uses secure transport protocols

Dependencies

The project depends on bash, ssh (client+server), systemd, ttyd, nginx, grep and optionally fail2ban (if you want to have a brute force protection). sshd must be configured for accepting incoming local connections.

Everything was tested on Debian Linux.

Installation

  1. Copy the config files (etc folder) to the corresponding directories in your system.
  2. Download ttyd and put the executable in /usr/local/bin/ttyd. You can choose another directory, but don't forget to edit the config files.
  3. Put ttyd-login script in /usr/local/bin/ttyd-login. Apply chmod +x for both executables.
  4. Create a user named ttyd, with a home directory and disabled login shell. It is required for ~/.ssh files. The home can be custom, for example /var/local/ttyd/:
# mkdir -p /var/local/ttyd
# useradd -d /var/local/ttyd -s /bin/false ttyd
# chown -R ttyd:ttyd /var/local/ttyd
  1. Add a new location in nginx configuration for your domain. If you want to have a shell under https://example.com/shell, add this to the server section:
location ~ ^\/shell(\/.*)?$ {
  include snippets/shell.conf;
}

Running the service

  1. Reload systemd unit files systemctl daemon-reload.
  2. Restart all edited services:
# systemctl restart nginx
# systemctl restart fail2ban
  1. Start httpsh service and enable the autostart during the system startup:
# systemctl start ttyd@shell
# systemctl enable ttyd@shell
  1. The shell should be up and running under https://example.com/shell

Done! 🎉🏆

Recommendations

I recommend to use fail2ban protection and TLS v1.3 for your domain. DO NOT use plain HTTP without TLS – it's like using telnet instead of ssh.

Questions and suggestions

If you have any questions, please create a new Github issue.

Sponsorship

If you appreciate my work, it will be cool to know that I drink my coffee thanks to you!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].