All Projects → MisterTea → Eternalterminal

MisterTea / Eternalterminal

Licence: apache-2.0
Re-Connectable secure remote shell

Programming Languages

C++
36643 projects - #6 most used programming language
CMake
9771 projects
shell
77523 projects

Projects that are alternatives of or similar to Eternalterminal

Snowflake
Graphical SFTP client and terminal emulator with helpful utilities
Stars: ✭ 1,676 (-23.51%)
Mutual labels:  terminal, ssh, remote-shell
Webterminal
ssh rdp vnc telnet sftp bastion/jump web putty xshell terminal jumpserver audit realtime monitor rz/sz 堡垒机 云桌面 linux devops sftp websocket file management rz/sz otp 自动化运维 审计 录像 文件管理 sftp上传 实时监控 录像回放 网页版rz/sz上传下载/动态口令 django
Stars: ✭ 1,124 (-48.7%)
Mutual labels:  terminal, ssh
Dotfiles
My dotfiles 🚀. Includes configs for neovim, tmux, zsh, alacritty and more.
Stars: ✭ 47 (-97.85%)
Mutual labels:  terminal, tmux
Dotfiles
👾 ~/
Stars: ✭ 91 (-95.85%)
Mutual labels:  terminal, tmux
Sultan
Sultan: Command and Rule over your Shell
Stars: ✭ 625 (-71.47%)
Mutual labels:  terminal, ssh
Opscloud
运维管理平台(阿里云),自动同步阿里云配置信息,堡垒机(容器),批量运维,Kubernetes,Zabbix管理等功能
Stars: ✭ 788 (-64.03%)
Mutual labels:  terminal, ssh
Alfred Ssh
SSH workflow for Alfred for Mac with powerful hostname expansion/completion
Stars: ✭ 78 (-96.44%)
Mutual labels:  terminal, ssh
Windterm
A quicker and better cross-platform SSH/Sftp/Shell/Telnet/Serial client.
Stars: ✭ 345 (-84.25%)
Mutual labels:  terminal, ssh
Leash
Browser Shell
Stars: ✭ 108 (-95.07%)
Mutual labels:  terminal, ssh
Awesome Terminal Commands
An awesome resource listing and explaining various commonly used *nix commands
Stars: ✭ 109 (-95.03%)
Mutual labels:  terminal, ssh
Xterm.js
A terminal for the web
Stars: ✭ 12,019 (+448.56%)
Mutual labels:  terminal, ssh
Nord Tmux
An arctic, north-bluish clean and elegant tmux color theme.
Stars: ✭ 567 (-74.12%)
Mutual labels:  terminal, tmux
Felix
A Friendly SSH Jumper Bastion Fortress Server
Stars: ✭ 542 (-75.26%)
Mutual labels:  terminal, ssh
Terminals
Terminals is a secure, multi tab terminal services/remote desktop client. It uses Terminal Services ActiveX Client (mstscax.dll). The project started from the need of controlling multiple connections simultaneously. It is a complete replacement for the mstsc.exe (Terminal Services) client. This is official source moved from Codeplex.
Stars: ✭ 971 (-55.68%)
Mutual labels:  terminal, ssh
Bridgy
cloud inventory + ssh + tmux + sshfs
Stars: ✭ 374 (-82.93%)
Mutual labels:  tmux, ssh
Kubectl Cssh
A kubectl plugin to ssh into Kubernetes nodes within separate tmux panes
Stars: ✭ 76 (-96.53%)
Mutual labels:  tmux, ssh
Electerm
📻Terminal/ssh/sftp client(linux, mac, win)
Stars: ✭ 4,763 (+117.39%)
Mutual labels:  terminal, ssh
Tmuxp
💻 tmux session manager. built on libtmux
Stars: ✭ 3,269 (+49.2%)
Mutual labels:  terminal, tmux
Tmux Config
📗 Example tmux configuration - screen + vim key-bindings, system stat, cpu load bar.
Stars: ✭ 1,633 (-25.47%)
Mutual labels:  terminal, tmux
Tmux Cssh
ClusterSSH with tmux
Stars: ✭ 123 (-94.39%)
Mutual labels:  tmux, ssh

Eternal Terminal

Eternal Terminal is a remote shell that automatically reconnects without interrupting the session.

Website: https://mistertea.github.io/EternalTerminal/.

Integration tests

Circle: CircleCI

Linux: Linux CI

Installing

macOS

The easiest way to install is using Homebrew:

brew install MisterTea/et/et

Then if you want a daemon to launch etserver on every boot:

On m1 (Apple Silicon) Macs:

sudo sed 's:/usr/local/bin/etserver:/opt/homebrew/bin/etserver:g' ../init/launchd/homebrew.mxcl.et.plist | sudo tee /Library/LaunchDaemons/homebrew.mxcl.et.plist
sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.et.plist

On x86 Macs:

sudo cp ../init/launchd/homebrew.mxcl.et.plist /Library/LaunchDaemons/homebrew.mxcl.et.plist
sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.et.plist

Alternatively, a package is available in MacPorts:

sudo port install et

Ubuntu

For Ubuntu, use our PPA:

sudo add-apt-repository ppa:jgmath2000/et
sudo apt-get update
sudo apt-get install et

Or see "Debian/Ubuntu" below to install and build from source (e.g., for ARM).

Debian

For debian, use our deb repo. For buster:

echo "deb https://github.com/MisterTea/debian-et/raw/master/debian-source/ buster main" | sudo tee -a /etc/apt/sources.list.d/et.list
curl -sSL https://github.com/MisterTea/debian-et/raw/master/et.gpg | sudo apt-key add -
sudo apt update
sudo apt install et

CentOS 7

Up to the present day the only way to install is to build from source.

CentOS 8

sudo dnf install epel-release
sudo dnf install et

FreeBSD

On FreeBSD, use:

pkg install eternalterminal

Fedora (version 29 and later):

sudo dnf install et

openSUSE

zypper ar -f obs://network
zypper ref
zypper in EternalTerminal

Other Linux

Install dependencies:

  • Fedora (tested on 25):

    sudo dnf install boost-devel libsodium-devel ncurses-devel protobuf-devel \
    	protobuf-compiler cmake gflags-devel libcurl-devel
    
  • Gentoo:

    sudo emerge dev-libs/boost dev-libs/libsodium sys-libs/ncurses \
    	dev-libs/protobuf dev-util/cmake dev-cpp/gflag
    

Download and install from source:

git clone --recurse-submodules https://github.com/MisterTea/EternalTerminal.git
cd EternalTerminal
mkdir build
cd build
cmake ../
make
sudo make install

Windows

Eternal Terminal works under WSL (Windows Subsystem for Linux). Follow the ubuntu instructions.

Docker Image

See docker/README.md

Verifying

Verify that the client is installed correctly by looking for the et executable: which et.

Verify that the server is installed correctly by checking the service status: systemctl status et. On some operating systems, you may need to enable and start the service manually: sudo systemctl enable --now et.

You are ready to start using ET!

Configuring

If you'd like to modify the server settings (e.g. to change the listening port), edit /etc/et.cfg.

Using

ET uses ssh for handshaking and encryption, so you must be able to ssh into the machine from the client. Make sure that you can ssh user@hostname.

ET uses TCP, so you need an open port on your server. By default, it uses 2022.

Once you have an open port, the syntax is similar to ssh. Username is default to the current username starting the et process, use -u or user@ to specify a different if necessary.

et hostname (etserver running on default port 2022, username is the same as current)
et user@hostname:8000 (etserver running on port 8000, different user)

You can specify a jumphost and the port et is running on jumphost using -jumphost and -jport. If no -jport is given, et will try to connect to default port 2022.

et hostname -jumphost jump_hostname (etserver running on port 2022 on both hostname and jumphost)
et hostname:8888 -jumphost jump_hostname -jport 9999

Additional arguments that et accept are port forwarding pairs with option -t="18000:8000, 18001-18003:8001-8003", a command to run immediately after the connection is setup through -c.

Starting from the latest release, et supports parsing both user-specific and system-wide ssh config file. The config file is required when your sshd on server/jumphost is listening on a port which is not 22. Here is an example ssh config file showing how to setup when

  • there is a jumphost in the middle
  • sshd is listening on a port which is not 22
  • connecting to a different username other than current one.
Host dev
  HostName 192.168.1.1
  User fred
  Port 5555
  ProxyJump [email protected]:22

With the ssh config file set as above, you can simply call et with

et dev (etserver running on port 2022 on both hostname and jumphost)
et dev:8000 -jport 9000 (etserver running on port 9000 on jumphost)

Building from Source

macOS

To build Eternal Terminal on Mac, the easiest way is to grab dependencies with Homebrew:

brew install --only-dependencies MisterTea/et/et
git clone --recurse-submodules https://github.com/MisterTea/EternalTerminal.git
cd EternalTerminal
mkdir build
cd build
# Make it work on Apple Silicon:
if [[ $(uname -a | grep arm) ]]; then export VCPKG_FORCE_SYSTEM_BINARIES=1; fi
cmake ../
make && sudo make install

To run an et server for testing, run ./etserver. To run an et server daemon persistently across reboots:

sudo cp ../init/launchd/homebrew.mxcl.et.plist /Library/LaunchDaemons
sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.et.plist

Debian/Ubuntu

Grab the deps and then follow this process.

Debian/Ubuntu Dependencies:

sudo apt install libboost-dev libsodium-dev libncurses5-dev \
	libprotobuf-dev protobuf-compiler libgflags-dev libutempter-dev libcurl-dev \
    build-essential ninja-build cmake git zip

Fetch source, build and install:

git clone --recurse-submodules https://github.com/MisterTea/EternalTerminal.git
cd EternalTerminal
mkdir build
cd build
# For ARM (including OS/X with apple silicon):
if [[ $(uname -a | grep arm) ]]; then export VCPKG_FORCE_SYSTEM_BINARIES=1; fi
cmake ../
make
sudo make install
sudo cp ../etc/et.cfg /etc/

Once built, the binary only requires libgflags-dev and libprotobuf-dev.

CentOS 7

Install dependencies:

sudo yum install epel-release
sudo yum install cmake3 boost-devel libsodium-devel ncurses-devel protobuf-devel \
     protobuf-compiler gflags-devel protobuf-lite-devel libcurl-devel

Install scl dependencies

sudo yum install centos-release-scl
sudo yum install devtoolset-8

Download and install from source (see #238 for details):

git clone --recurse-submodules https://github.com/MisterTea/EternalTerminal.git
cd EternalTerminal
mkdir build
cd build
scl enable devtoolset-8 'cmake3 ../'
scl enable devtoolset-8 'make && sudo make install'
sudo cp ../systemctl/et.service /etc/systemd/system/
sudo cp ../etc/et.cfg /etc/

Find the actual location of et:

which etserver

Correct the service file (see #180 for details).

sudo sed -ie "s|ExecStart=[^[:space:]]*[[:space:]]|ExecStart=$(which etserver) |" /etc/systemd/system/et.service

Alternativelly, open the file /etc/systemd/system/et.service in an editor and correct the ExectStart=... line to point to the correct path of the etserver binary.

 ExecStart=/usr/local/bin/etserver --daemon --cfgfile=/etc/et.cfg

Reload systemd configs:

sudo systemctl daemon-reload

Start the et service:

sudo systemctl enable --now et.service

Building using Docker

Builder Dockerfiles are located at deployment/. Supported OSes: CentOS 8, openSUSE and Ubuntu.

Reporting issues

If you have any problems with installation or usage, please file an issue on github.

Developers

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].