ttyd를 사용하여 터미널을 공유 가능한 웹 페이지로 변환

ttyd를 사용하여 터미널을 공유 가능한 웹 페이지로 변환

동료와 서버 문제를 해결하거나 친구에게 복잡한 명령을 보여줄 때처럼, 터미널 작업을 실시간으로 보여줘야 했던 적이 있으신가요? 스크린샷을 찍거나 화면을 녹화하는 대신, 간단한 웹 링크를 통해 실시간 터미널 세션을 공유하는 편리함을 상상해 보세요.이 방법은 협업을 향상시킬 뿐만 아니라 작업 내용을 실시간으로 확인할 수 있도록 해줍니다.

Linux는 SSH와 같은 기존 옵션, tmux 및 screen과 같은 도구, asciinema와 같은 화면 녹화 유틸리티를 포함하여 다양한 터미널 공유 방법을 제공합니다.이러한 옵션들은 효과적일 수 있지만, 불필요한 복잡성과 워크플로우를 방해할 수 있는 추가적인 종속성을 수반하는 경우가 많습니다.

ttyd 명령줄 도구를 입력하세요.ttyd는 터미널을 웹 인터페이스로 변환하여 공유를 간소화하고, 링크가 있는 모든 사람이 추가 소프트웨어를 설치하거나 설정을 구성하지 않고도 세션에 액세스하고 상호 작용할 수 있도록 합니다.

ttyd의 주요 기능

  • 뛰어난 성능을 위해 Libwebsockets와 libuv를 활용합니다.
  • 제한된 연결 환경에서도 원활한 환경을 제공하기 위해 WebSocket을 사용합니다.
  • 파일 전송을 위해 그래픽 ZMODEM을 지원하므로 사용자는 웹 브라우저를 통해 파일을 직접 끌어서 놓을 수 있습니다.
  • 보안 세션을 보장하기 위해 SSL/TLS 암호화가 포함되어 있으며 인증 옵션도 제공됩니다.
  • 지정된 모든 포트에서 실행되며 Raspberry Pi와 같은 장치에 배포하기 위한 호환성을 제공합니다.
  • 터미널과 웹 인터페이스 간의 복사/붙여넣기 기능이 내장되어 있습니다.
  • 세션 관리를 위해 동시 연결을 제한하는 기능.
  • 기본 웹 브라우저에서 자동으로 세션을 엽니다.
  • 강화된 보안을 위해 단일 클라이언트 액세스 제한을 활성화합니다.

Linux에 ttyd를 설치하는 방법

데비안이나 우분투 사용자의 경우 기본 저장소에 ttyd가 없을 수 있습니다.하지만 소스에서 빌드하는 등의 다른 방법을 사용하면 설치가 간편합니다.

먼저 시스템이 완전히 업데이트되었는지 확인하세요.

sudo apt update && sudo apt upgrade -y

다음으로, ttyd를 컴파일하는 데 필요한 종속성을 설치합니다.

sudo apt install -y build-essential cmake git libjson-c-dev libwebsockets-dev

Ttyd 도구 설치

GitHub에서 ttyd 저장소를 복제하고 다음 명령을 사용하여 컴파일합니다.

git clone https://github.com/tsl0922/ttyd.git cd ttyd mkdir build && cd build cmake..make sudo make install

이제 시스템에 ttyd가 설치되었습니다.

다른 Linux 배포판의 경우, 유사한 빌드 지침을 따르거나, ttyd의 GitHub 릴리스 페이지 에서 미리 컴파일된 바이너리를 다운로드할 수 있습니다.빠르게 다운로드하려면 다음 wget 명령을 사용하세요.

wget https://github.com/tsl0922/ttyd/releases/download/1.7.7/ttyd.x86_64

다운로드한 바이너리를 실행 가능하게 만듭니다.

chmod +x ttyd.x86_64

이 방법을 사용하면 다양한 Linux 배포판에서 ttyd를 작동시키는 가장 빠른 방법 중 하나를 얻을 수 있습니다. Snap과 같은 범용 패키지 관리자를 사용하여 ttyd를 설치할 수도 있습니다.

sudo snap install ttyd --classic

ttyd가 설치되면.을 입력하여 설치를 확인하세요 ttyd --version.

터미널을 공유 가능한 웹 인터페이스로 변환

ttyd를 활용하는 가장 간단한 방법은 기본 셸 세션을 공유하는 것입니다.다음 명령을 실행하세요.

ttyd bash

이 명령어는 기본적으로 7681번 포트에서 웹 서버를 시작합니다.접속하려면 웹 브라우저를 열고 http://localhost:7681 또는 http://your-ip-address:7681 로 접속하세요.

Ttyd를 사용하여 만든 공유 가능한 웹 페이지

이제 웹 페이지 내에서 터미널이 표시되며, 로컬 네트워크 사용자는 ‘localhost’를 사용자 기기의 IP 주소로 변경하여 접속할 수 있습니다.ip addr show또는 를 사용하여 IP 주소를 확인하고 hostname -I다른 사용자와 공유할 수 있습니다.

ttyd를 사용하면 단순히 셸을 공유하는 것 외에도 브라우저에서 다른 명령줄 애플리케이션을 노출할 수 있습니다.예를 들어, 해당 명령은 프로세스 관리자를 ttyd htop직접 실행하고 htop, ttyd ttyd vim또는 ttyd topttyd는 해당 도구를 공유합니다.

웹 페이지에서 상위 명령줄 도구 출력 열기

세션의 포트 번호를 사용자 지정하려면 다음 -p플래그를 사용하여 쉽게 수행할 수 있습니다.

ttyd -p 8080 bash

이렇게 하면 기본 7681 대신 8080 포트에서 터미널을 사용할 수 있습니다.

무단 액세스를 방지하기 위해 ttyd는 다음 -c옵션을 통한 인증도 지원합니다.

ttyd -c username:password bash

Ttyd를 사용한 터미널 세션에 대한 로그인 옵션

이 구성은 기본 HTTP 인증을 요구하여 터미널에 접근하려는 모든 사용자가 지정된 자격 증명을 입력하도록 합니다.운영 환경에서는 보다 정교한 인증이 바람직하지만, 비공식적인 데모나 신뢰할 수 있는 네트워크에는 이 방법이 효과적입니다.

또한 사용자의 입력을 금지하는 읽기 전용 세션을 만들 수 있습니다.

ttyd -R bash

이 기능은 제어권을 유지해야 하는 프레젠테이션이나 교육 환경에서 특히 유용할 수 있습니다.반대로, -W쓰기 가능하고 상호작용이 가능한 세션에는 이 플래그를 활용하세요.

ttyd -W bash

인터넷을 통한 안전한 공유

인터넷을 통해 터미널을 공유할 때는 암호화 구현이 매우 중요합니다.ttyd는 자체 SSL 인증서를 사용하여 HTTPS를 지원합니다. SSL 인증서가 없는 경우 테스트 목적으로 OpenSSL을 사용하여 자체 서명된 인증서를 생성할 수 있지만, 실제 운영 환경에서는 Let’s Encrypt와 같은 신뢰할 수 있는 인증 기관을 사용하는 것이 좋습니다.

ttyd는 기본적으로 로컬 네트워크에서만 접근 가능하지만, 외부 네트워크로 확장해야 하는 경우가 많습니다.여러 가지 방법을 통해 안전하게 확장할 수 있습니다.가장 간단한 방법 중 하나는 Tailscale이나 Cloudflare Tunnel과 같은 터널링 서비스와 ttyd를 통합하는 것입니다.이 서비스를 사용하면 임시 공개 URL을 통해 로컬 포트를 인터넷에서 안전하게 사용할 수 있습니다.또는 도메인 이름을 사용하여 VPS 또는 클라우드 서버에 ttyd를 호스팅하여 영구적인 HTTPS 액세스를 허용할 수도 있습니다.

더 고급 구성의 경우, ttyd를 로컬 호스트에만 바인딩하고 Nginx 또는 Caddy와 같은 역방향 프록시 뒤에 배치할 수 있습니다.이 설정을 통해 SSL 종료, 인증 및 세부적인 접근 제어를 처리할 수 있습니다.

결론

ttyd를 사용하면 복잡한 터미널 공유 프로세스가 하이퍼링크를 공유하는 것과 비슷한 간단한 작업으로 전환됩니다.

출처 및 이미지

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다