Shell In A Box - 웹 브라우저를 통해 Linux SSH 터미널에 액세스


Shell In A Box(shellinabox로 발음)는 Markus Gutschke가 만든 웹 기반 터미널 에뮬레이터입니다. 지정된 포트에서 웹 기반 SSH 클라이언트로 실행되는 내장 웹 서버가 있으며 AJAX/JavaScript 및 CSS- FireSSH와 같은 추가 브라우저 플러그인 없이 브라우저를 사용할 수 있습니다.

이 튜토리얼에서는 Shellinabox를 설치하고 모든 시스템에서 최신 웹 브라우저를 사용하여 원격 SSH 터미널에 액세스하는 방법을 설명합니다. Linux 서버에 대한 웹 기반 SSH 액세스는 방화벽으로 보호되고 HTTPS 트래픽만 통과할 수 있는 경우 매우 유용합니다.

Linux 시스템에 Shellinabox 설치

기본적으로 Shellinabox 도구는 그림과 같이 기본 패키지 관리자를 사용하여 기본 리포지토리를 통해 Debian 기반 Linux 배포판에 포함됩니다.

$ sudo apt install openssl shellinabox

Red Hat 기반 배포판에서는 다음 명령어를 사용하여 소스에서 설치해야 합니다.

# yum install git openssl-devel pam-devel zlib-devel autoconf automake libtool
# git clone https://github.com/shellinabox/shellinabox.git && cd shellinabox
# autoreconf -i
# ./configure && make

Linux 시스템에서 Shellinabox 구성

기본적으로 shellinaboxd는 localhost의 TCP 포트 4200에서 수신 대기합니다. 보안상의 이유로 이 기본 포트를 무작위(예: 6175)로 변경하여 다른 사람이 SSH 상자에 접근하기 어렵게 만듭니다.

또한 설치하는 동안 HTTPS 프로토콜을 사용하기 위해 /var/lib/shellinabox에 자체 서명된 새로운 SSL 인증서가 자동으로 생성됩니다.

$ sudo vi /etc/default/shellinabox
OR 
$ sudo nano /etc/default/shellinabox

아래와 같이 구성을 변경합니다...

# Should shellinaboxd start automatically
SHELLINABOX_DAEMON_START=1

# TCP port that shellinboxd's webserver listens on
SHELLINABOX_PORT=6175

# Parameters that are managed by the system and usually should not need
# changing:
# SHELLINABOX_DATADIR=/var/lib/shellinabox
# SHELLINABOX_USER=shellinabox
# SHELLINABOX_GROUP=shellinabox

# Any optional arguments (e.g. extra service definitions).  Make sure
# that that argument is quoted.
#
#   Beeps are disabled because of reports of the VLC plugin crashing
#   Firefox on Linux/x86_64.
SHELLINABOX_ARGS="--no-beep"

# specify the IP address of an SSH server
OPTS="-s /:SSH:192.168.0.140"

# if you want to restrict access to shellinaboxd from localhost only
OPTS="-s /:SSH:192.168.0.140 --localhost-only"

구성을 완료하면 다음 명령을 실행하여 shellinabox 서비스를 다시 시작하고 확인할 수 있습니다.

$ sudo systemctl restart shellinabox
$ sudo systemctl status shellinabox

이제 netstat 명령을 사용하여 Shellinabox가 포트 6175에서 실행 중인지 확인하겠습니다.

$ sudo netstat -nap | grep shellinabox

방화벽에서 shellinabox를 보호하고 특정 IP 주소에 대한 6175 포트를 열어 Linux 쉘에 원격으로 액세스하십시오.

------- On Debian, Ubuntu and Mint -------
$ sudo ufw allow 6175/tcp
$ sudo ufw allow from 192.168.0.103 to any port 6175   

------- On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux -------
$ sudo firewall-cmd --zone=public --add-port=6175/tcp  
$ sudo firewall-cmd --zone=public --add-source=192.168.0.103/6175 --permanent

웹 브라우저를 통해 Linux SSH 터미널에 액세스

이제 웹 브라우저를 열고 https://Your-IP-Adress:6175로 이동합니다. 웹 기반 SSH 터미널을 볼 수 있어야 합니다. 사용자 이름과 비밀번호를 사용하여 로그인하면 쉘 프롬프트가 표시됩니다.

마우스 오른쪽 버튼을 클릭하여 셸의 모양과 느낌을 변경하는 것을 포함하여 여러 기능과 작업을 사용할 수 있습니다.

자세한 내용은 공식 Shellinabox github 페이지를 참조하십시오.