출처 - Secure Shell FAQ
구글 크롬 팀에서 크롬 브라우저에서 동작하는 SSH 터미널 애뮬레이터인 Secure Shell을 발표했습니다. 베타 상태로 출시되긴 했지만 기본적인 기능은 충실히 구현하고 있습니다. Google Developers Hackathon Korea 2011에서 저희 팀이 만들었던 실험적 수준의 Beagle Term이라는 프로젝트가 비슷한 기능의 크롬 확장 앱이었기 때문에 개인적으로 아주 관심있게 살펴봤습니다.
브라우저에서 동작하는 기존의 SSH 터미널은 프록시 서버를 사용하는 방식이 많습니다. 즉, 기존의 SSH 서버 이외의 환경을 서버쪽에 구성해야 되는 방식이기 때문에, 설치를 하기까지 쉽사리 손이 가지 않는 것이 현실입니다. 일반 유저들이 서버를 다룰 수 있는 권한이 없을 수도 있고, 추가 작업을 해야 한다는 것이 부담으로 다가오기 때문에 저 개인적으로 이 부분은 꽤 중요한 사안이었습니다.
크롬 팀에서 발표한 Secure Shell은 크롬 브라우저의 Native Client 기술을 사용해서 기존 SSH 서버에 직접 접속하기 때문에 이런 작업이 전혀 필요 없습니다. hterm이라 불리는 HTML 기반의 쉘과 OpenSSH를 Native Client에서 구현을 한 것인데요. Putty나 Tera Term과 같이 크롬 브라우저가 독립적인 터미널 애뮬레이터로 작동하는 샘입니다.
제가 libssh를 NaCl로 포팅할 때만 해도 NaCl 보안상의 이유로 Raw Socket을 지원하지 않아서 포기했었던 기억이 납니다. (결국엔 NPAPI로 다시 선회할 수 밖에 없었습니다.) 그래서 이 부분을 어떻게 구현했는지가 상당히 궁금했습니다. 관련 자료와 소스 코드를 살펴보니 NaCl 단에서 WebSocket을 사용할 수 있는 API가 그 사이 추가되었습니다. (Raw Socket은 정책적으로 허용될 가능성이 없어 보입니다.)
제가 작업할 때 Pepper API의 버전이 14였는데 현재 안정 버전이 18인 것을 감안하면 그 사이 많은 변화가 있었을 것 같습니다. 그런데 순수하게 WebSocket 만으로는 SSH 서버에 직접적으로 접속할 수가 없습니다. Secure Shell도 이 부분을 사용하는 것 같지는 않고요. Secure Shell을 위한 비공개된 API를 쓰고 있거나 실험적인 API를 사용하는 것이 아닌가 하는 생각이 듭니다. Chromium 코드 저장소에 커밋된 다음의 코드들이 그 예입니다.
Javascript 쪽 소스에도 구글의 HTTP를 SSH로 중계하는 릴레이 서버를 사용한다는 설명이 있는 것으로 보아 아직은 NaCl API만으로는 처리가 불가능하다. 라는 결론에 다다랐습니다. 아무튼, 내부 동작은 여전히 의문이 남아있는 상태입니다. 코드만 보고 전체 그림을 단번에 그릴 수 있는 능력이 있었다면 참 좋을 것 같은데, 아직은 한참 못 미치는 수준이다 보니 대부분이 추정에 의한 것입니다.
개인적으로는 Secure Shell에서 사용한 방법을 참고해서 Beagle Term을 다시 구현해보는 것이었는데 아직은 쉽지 않을 것 같네요.
Secure Shell은 크롬 웹스토어에서 내려받을 수 있습니다.
hterm / Secure Shell FAQ는 아래 링크에서 살펴 볼 수 있습니다.
'Articles' 카테고리의 다른 글
| [Articles] Secure Shell - 크롬 확장 - 어떻게 만들었을까? (0) | 2012/05/05 |
|---|---|
| [Articles] DevFestX 행사 소식 (0) | 2012/04/24 |
| [Articles] PySide - Qt 애드온으로 편입 (2) | 2012/03/07 |
| [Articles] Ubuntu for Android - 데스크톱의 새로운 대안 (3) | 2012/02/22 |
| [Articles] 파이어폭스 10 출시 (0) | 2012/02/02 |
| [Articles] Qt5와 PhoneGap의 만남 (0) | 2012/01/14 |
| [Articles] Tizen 소스 및 SDK 알파 버전 공개 (0) | 2012/01/13 |
| [Articles] Qt와 NaCl의 믹스 & 매치 (4) | 2012/01/06 |
| [Articles] Qt 4.8.0 출시 소식 (0) | 2011/12/16 |
| [Articles] Qt + Python = PySide 1.0.9 출시 (0) | 2011/12/14 |
| [Articles] Dana White - 트위터는 역사상 가장 훌륭한 마케팅 도구 (0) | 2011/12/11 |
댓글을 달아 주세요