맨위로가기

웹 기반 SSH

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

웹 기반 SSH는 사용자가 웹 브라우저를 통해 Secure Shell(SSH) 서버에 접속할 수 있도록 해주는 애플리케이션이다. 웹 기반 SSH는 클라이언트 측과 서버 측으로 구성되며, 클라이언트 측은 자바스크립트와 동적 HTML을 사용하여 키 입력을 캡처하고 서버와 통신하며 결과를 표시한다. 서버 측은 웹 애플리케이션 서버에서 들어오는 요청을 처리하고 보안 셸 클라이언트로 전달하며, 터미널 출력을 HTML로 변환하여 클라이언트에 전달한다. 웹 기반 SSH는 접근성, 익명 접근, 감사 가능성, 세션 재개, 임베딩 가능성 및 고유 기능과 같은 장점을 제공하지만, 보안, 신뢰 및 터널링과 관련된 고려 사항이 필요하다.

더 읽어볼만한 페이지

  • 시큐어 셸 - PuTTY
    PuTTY는 SSH, 텔넷 등 다양한 통신 프로토콜을 지원하는 자유-오픈 소스 터미널 에뮬레이터로, 여러 운영체제에서 사용 가능하며 터미널 에뮬레이션, 포트 포워딩 기능과 함께 PSCP, PSFTP, Plink 등의 유틸리티 및 PuTTYgen, Pageant를 제공한다.
  • 시큐어 셸 - SSH 파일 전송 프로토콜
    SSH 파일 전송 프로토콜(SFTP)은 SSH를 통해 안전한 파일 전송 및 관리를 제공하며, SCP보다 플랫폼 독립적이고 정부 및 공공기관에서 사용이 권장되는 네트워크 프로토콜이다.
  • 원격 관리 소프트웨어 - 텔넷
    텔넷은 1973년에 정의된 7비트 ASCII 문자 세트를 사용하는 네트워크 프로토콜로, 클라이언트-서버 방식으로 작동하며 TCP 포트 23 또는 2323을 사용하며, 보안 취약성으로 인해 SSH로 대체되고 있다.
  • 원격 관리 소프트웨어 - 팀뷰어
    팀뷰어는 2005년에 출시된 원격 접근 및 제어 소프트웨어로, 다양한 운영 체제를 지원하며 원격 접근, 제어, 파일 전송, 협업 기능을 제공하고, 개인 사용자를 위한 무료 버전과 상업적 사용을 위한 구독 요금제를 운영한다.
  • 암호 프로토콜 - HTTPS
    HTTPS는 HTTP에 보안 기능이 더해진 통신 규약으로, 웹 브라우저와 서버 간 통신을 암호화하여 보안을 강화하지만, 인증서 비용, 서버 부하, 혼합 콘텐츠 문제 등의 단점도 존재한다.
  • 암호 프로토콜 - IPsec
    IPsec은 IP 네트워크에서 보안 통신을 제공하기 위한 프로토콜 스위트로서, 전송 모드와 터널 모드를 지원하며, AH, ESP 등의 프로토콜을 사용하여 데이터 무결성, 인증, 기밀성을 제공하고, IKE 프로토콜을 통해 보안 연결을 설정 및 키를 교환하는 개방형 표준이다.
웹 기반 SSH
개요
유형SSH 클라이언트
특징웹 브라우저 기반 인터페이스
사용 사례원격 서버 관리, 보안 접속
기술적 측면
주요 기술HTML
CSS
JavaScript
WebSocket 또는 HTTP 기반 터널링
장점클라이언트 측 소프트웨어 설치 불필요
방화벽 및 프록시 서버 환경에서 용이한 접속
다양한 운영체제 지원
단점브라우저의 보안 취약점으로부터의 위험
네트워크 지연에 따른 성능 저하 가능성
브라우저 호환성 문제
보안 고려 사항
중요성HTTPS 사용을 통한 통신 암호화
강력한 인증 메커니즘 (예: SSH 키)
정기적인 보안 업데이트
구현 방법
일반적인 접근 방식웹 서버에서 SSH 클라이언트 프로세스 실행 및 결과 전달
브라우저 내 JavaScript 기반 터미널 에뮬레이터 사용
활용 사례
주요 사용 분야클라우드 서버 관리
웹 기반 개발 환경
원격 지원
관련 도구 및 프로젝트
예시GateOne
Shellinabox
Wetty
Keycloak

2. 기술

웹 기반 SSH 클라이언트는 사용자가 웹 브라우저를 통해 SSH 서버에 접속할 수 있게 해주는 애플리케이션이다. 웹 기반 SSH 클라이언트는 크게 클라이언트 사이드와 서버 사이드/웹 애플리케이션 부분으로 구성된다.


  • 클라이언트 사이드: 일반적으로 자바스크립트와 동적 HTML 페이지를 사용하여 키 입력을 포착하고, 메시지를 서버로 전송하며, 사용자의 웹 브라우저에 결과를 표시한다.
  • 서버 사이드/웹 애플리케이션: 웹 애플리케이션 서버에서 들어오는 요청을 처리한다. 키보드 이벤트는 연결된 SSH 서버와 통신하는 시큐어 셸 클라이언트로 전달된다. 터미널 출력은 자바스크립트를 통해 HTML로 변환되어 클라이언트에 전달되거나, 서버에서 HTML로 변환한 다음 클라이언트로 전송된다.

2. 1. 클라이언트 측 구성 요소

웹 기반 SSH 클라이언트는 사용자가 웹 브라우저를 통해 SSH 서버에 접속할 수 있게 해주는 애플리케이션이다. 클라이언트 측 구성 요소는 일반적으로 자바스크립트와 HTML 페이지를 사용하여 구현되며, 다음 기능을 수행한다.

  • 키 입력을 캡처한다.
  • 서버와 메시지를 주고받는다.
  • 사용자의 웹 브라우저에 결과를 표시한다.

2. 2. 서버 측 구성 요소

웹 기반 SSH 클라이언트는 크게 두 부분으로 구성된다. 일반적으로 자바스크립트와 동적 HTML을 사용하여 구현되는 클라이언트 측 구성 요소와, 일반적으로 애플리케이션 서버에서 구현되는 서버 측 또는 웹 애플리케이션 구성 요소가 있다.

서버 측 구성 요소는 들어오는 요청을 처리하고 키보드 이벤트를 연결된 SSH 서버와 통신하는 시큐어 셸 클라이언트로 전달한다. 터미널 출력은 자바스크립트를 사용하여 HTML로 변환되어 클라이언트로 전달되거나, 클라이언트로 전송되기 전에 서버에서 HTML로 변환된다.[1]

2. 3. 터미널 에뮬레이션

웹 기반 SSH 서버는 클라이언트 측 또는 서버 측 터미널 에뮬레이션을 사용할 수 있다. 클라이언트 측은 SSH 서버로부터 직접 순수 터미널 출력을 클라이언트로 전달받고,[10] 서버 측은 터미널 화면과 메모리 내 상태를 추적한 다음 화면 업데이트 발생 시 또는 클라이언트가 업데이트를 요청 시 이를 HTML로 변환한다.[11]

2. 3. 1. 클라이언트 측 터미널 에뮬레이션

웹 기반 SSH 서버는 SSH 서버로부터 직접 순수 터미널 출력을 클라이언트로 전달하는 클라이언트 사이드 터미널 에뮬레이션을 이용한다.

클라이언트 측 터미널 에뮬레이션은 SSH 서버에서 생성된 원시 터미널 출력을 클라이언트로 직접 전송한다. 이는 터미널 출력을 HTML로 변환하는 프로세스를 클라이언트 측으로 오프로드하는 장점이 있다. 그러나, 자바스크립트의 기능에 따라 제한될 수 있으며, 클라이언트의 CPU와 메모리를 상당량 사용할 수 있다.

클라이언트 측 터미널 에뮬레이터의 예시로는 vt100.js[1], vt1000.js[10]가 있다.

2. 3. 2. 서버 측 터미널 에뮬레이션

서버 측 터미널 에뮬레이션을 사용하는 웹 기반 SSH 서버는 일반적으로 터미널 화면과 메모리 내 상태를 추적한 다음, 화면 업데이트가 발생하거나 클라이언트가 업데이트를 요청할 때 이를 HTML로 변환한다.

서버 측 터미널 에뮬레이션은 터미널 화면과 상태를 메모리에 저장하고 화면 업데이트가 발생하거나 클라이언트가 업데이트를 요청할 때 이를 HTML로 변환한다.[2] 이 방법은 사용자가 다른 웹 브라우저에서 기존 세션에 연결하더라도 터미널의 상태를 유지하는 장점이 있지만, 서버에서 더 많은 CPU와 메모리를 사용할 수 있다.

서버 측 터미널 에뮬레이터의 예로는 terminal.py가 있다.[11][2]

3. 장점

웹 기반 SSH의 주요 장점은 다음과 같다.


  • '''접근성''': 웹 기반 SSH는 클라이언트 소프트웨어를 로컬에 설치할 필요가 없다. 따라서 웹 브라우저를 통해 어디에서든 SSH 서버에 접근할 수 있다. 통신이 HTTP 또는 HTTPS를 기반으로 하므로, 인터넷 접근이 80번 포트(HTTP) 또는 443번 포트(HTTPS)로 제한된 방화벽 또는 프록시 뒤에서도 SSH 서버에 접근할 수 있다.
  • '''익명 접근''': SSH 접근이 중간 웹 애플리케이션 서버를 통해 터널링되므로, 실제 SSH 서버와 통신하는 것은 이 서버이다. 즉, SSH 서버는 웹 애플리케이션 서버의 IP 주소만 인식하고 실제 클라이언트의 IP 주소는 숨겨진다.
  • '''감사 가능성''': 클라이언트와 SSH 서버 간의 모든 통신은 웹 애플리케이션 서버를 거쳐야 하므로, 이 통신을 기록할 수 있다. 이는 악의적인 클라이언트가 자신의 활동 로그를 삭제하는 것을 방지한다. 이 상황은 기존의 SSH 서버와 정확히 동일하다.
  • '''세션 재개''': 일부 웹 기반 SSH 구현은 연결이 끊어진 후 사용자가 SSH 세션을 재개할 수 있도록 한다. 이는 기존의 SSH 클라이언트에서는 불가능하다.
  • '''임베딩 가능성''': 웹 기반 SSH 구현은 모든 웹 페이지에 임베딩될 수 있으며, 이를 통해 다른 웹 기반 애플리케이션에 통합할 수 있다.
  • '''고유 기능''': 많은 웹 기반 SSH 도구는 다른 사용자와 터미널을 공유하고, 터미널 내에서 이미지를 표시하는 기능 등과 같은 고유한 기능을 가지고 있다.

4. 중요 고려 사항

웹 기반 SSH 클라이언트를 사용할 때 다음 문제들을 고려해야 하며 중요합니다.


  • '''보안''': HTTPS를 사용하여 웹 애플리케이션 서버와 통신하는지 확인하는 것이 중요합니다. 그렇지 않으면 전송되는 모든 데이터는 간단한 패킷 스니퍼를 사용하여 읽을 수 있으며, 이는 민감한 정보를 노출할 수 있습니다.
  • '''신뢰''': 웹 애플리케이션 서버로 전송되는 데이터는 거기에서 해독됩니다. 이는 발행된 명령을 실제 SSH 서버로 전달하기 위해 필요합니다. 웹 기반 SSH 솔루션 운영자는 일반적으로 민감한 데이터를 기록(logging)하지 않지만, 데이터는 이론적으로 일반 형태로 사용 가능합니다. 웹 애플리케이션 서버와 SSH 서버가 동일한 서버에서 실행되거나 동일한 주체에 의해 제어되는 경우 이는 보안 문제를 일으킬 가능성이 낮습니다.
  • '''터널링''': 대부분의 기존 애플리케이션 기반 SSH 클라이언트와 달리 웹 기반 SSH 클라이언트는 TCP 트래픽을 터널링("포워딩")할 수 없습니다. 예를 들어, 웹 기반 SSH 세션을 통해 X 세션을 실행하는 것은 불가능합니다. 그러나 이러한 기능의 부족은 구현 문제로 인해 발생하며, 어떤 면에서든 고유한 것은 아닙니다.

5. 무료 및 오픈 소스 예시


  • 구글의 '크롬 및 크로미움용 Secure Shell 확장 프로그램'[3]은 Native Client에서 실행되는 OpenSSH 클라이언트 코드와 자바스크립트 hterm 터미널 에뮬레이터를 페어링한다.[7] Secure Shell 확장 프로그램은 프록시 훅을 통해 구글이 아닌 HTTP-to-SSH 프록시와 함께 작동하며, 타사 애플리케이션인 'nassh-relay'[8]는 해당 훅을 사용하여 Secure Shell 확장 프로그램이 XMLHttpRequest 또는 WebSocket 전송을 통해 SSH 연결을 설정할 수 있도록 한다.
  • 'shellinabox'[4]는 독립 실행형 서비스 또는 nginx와 함께 작동하여 로그인 셸에 대한 HTTPS 액세스를 제공하며, 데비안레드햇 파생 리눅스 배포판용으로 패키징되어 있다.
  • 'webssh'[5]는 파이썬으로 작성된 유사한 솔루션이다.
  • 'Bastillion'[9]은 감사 및 키 관리 기능을 갖춘 자체 호스팅 웹 기반 배스천 호스트이다. 사용자는 HTTPS를 통해 중앙 서버에 연결하며 SSH 연결은 보안 WebSocket 전송을 통해 프록시된다.
  • 'FireSSH'는 Firefox ESR 및 Waterfox에서 작동하는 브라우저 플러그인이다.

참조

[1] 웹사이트 Google Code Archive - Long-term storage for Google Code Project Hosting http://code.google.c[...]
[2] 웹사이트 Terminal.py - A Pure Python Terminal Emulator — Gate One 1.2.0 documentation https://liftoff.gith[...]
[3] 웹사이트 Secure Shell App https://chrome.googl[...]
[4] 웹사이트 Shellinabox https://github.com/s[...] 2021-10-28
[5] 웹사이트 Webssh: Web based SSH client https://pypi.org/pro[...]
[6] 웹사이트 jcterm http://www.jcraft.co[...]
[7] 웹사이트 Chromium Secure Shell FAQ https://chromium.goo[...]
[8] 웹사이트 nassh-relay GitHub repository https://github.com/z[...]
[9] 웹사이트 Bastillion - Web-Based SSH Access and Key Management https://www.bastilli[...]
[10] 웹사이트 http://code.google.c[...]
[11] 웹사이트 https://liftoff.gith[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com