SSH를 위한 네이티브 그래픽 셸

3 days ago 11
  • 서버와 엣지 기기가 터미널만 노출하는 대신 브라우저 기반 그래픽 셸을 제공하면, 다른 기기에서 원격 앱을 더 자연스럽게 사용할 수 있음
  • 이 셸은 앱 홈 화면과 앱 간 URL 조회 API를 제공해, 파일이나 리소스를 적절한 앱으로 넘기는 흐름을 만들 수 있음
  • 앱은 작은 HTTP 서버로 UI를 제공하지만 일반 공개 웹 서버가 아니라, 주로 SSH나 로컬 접근을 전제로 한 비공개 서버로 동작함
  • 암호화는 앱마다 직접 구현하지 않고 SSH 계층에 맡길 수 있어, 각 앱 서버는 의존성이 적고 단순한 구조를 유지할 수 있음
  • Lewis는 이를 위해 Outer Loop를 SSH 브라우저로 만들고 오픈소스 Outer Shell을 공개했으며, HTML 앱과 네이티브 outerframe 앱을 모두 염두에 둠

SSH 위에서 동작하는 그래픽 셸

  • 웹 브라우저는 한 기기인 서버가 다른 기기인 클라이언트에 경험을 제공하는 흐름을 이미 잘 정립해 둔 사례임
  • 같은 방식을 서버와 엣지 기기에 적용하면, 원격 환경에서도 터미널 기반 앱 대신 그래픽 앱을 사용할 수 있음
  • 셸은 앱들의 홈 화면을 제공하고, 각 앱은 작은 HTTP 서버로 웹 사용자 인터페이스를 서빙함
  • 셸 API는 앱들이 서로의 URL을 찾을 수 있게 해 앱 간 연결을 만듦
    • 예를 들어 앱이 자신을 텍스트 편집기로 등록하면, 다른 앱에서 텍스트 파일을 더블클릭해 해당 편집기 앱으로 열 수 있음
  • 앱은 기존 HTML 기반 웹 앱일 수도 있고, 네이티브 outerframe 앱일 수도 있음

구현 방식과 공개된 프로젝트

  • 앱 HTTP 서버는 일반적으로 네트워크의 다른 기기에서 접근할 수 없는 비공개 서버로 동작함
    • 사용자는 이를 SSH를 통해 쓰거나 로컬에서 사용함
    • 대부분의 기존 웹 기반 서버 도구와 달리 localhost 포트보다 Unix domain socket 파일을 주로 사용함
    • Unix domain socket 파일은 포트와 비슷하지만 파일시스템에 존재하며 명시적인 사용자 권한을 가짐
  • 각 HTTP 서버는 암호화를 직접 처리하지 않아도 됨
    • 암호화는 SSH 계층에서 처리됨
    • 이 덕분에 각 앱 서버는 의존성 없이 매우 단순할 수 있음
  • Outer Loop는 이런 그래픽 셸을 위한 SSH 브라우저로 만들어짐
  • 오픈소스 Outer Shell이 공개됨
  • 관련 문서는 세 갈래로 제공됨
  • 브라우저에서 Unix socket 연결 같은 기능은 매우 틈새 기능으로 취급됐지만, SSH와 sudo 인식 같은 기능과 결합하면 새로운 기술적 가능성이 생김
  • Jupyter와 Tensorboard 같은 개별 서버형 웹 앱은 등장했지만, 각각 일회성 보안 프로토콜을 사용해 이를 “올바르게” 전달하는 공통 방식은 자리 잡지 못함
  • AI가 코드 작성을 도울 수 있게 되면서 각 앱이 대상 플랫폼별 코드베이스를 갖는 것이 실용적이 됐고, 읽기와 가벼운 앱에는 HTML을, 작업용 앱에는 플랫폼 맞춤형 네이티브 앱을 쓰는 구조가 자연스러운 웹 아키텍처로 제안됨
Read Entire Article