티스토리 툴바



출처 - 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는 아래 링크에서 살펴 볼 수 있습니다.



저작자 표시 비영리 변경 금지
Posted by 완소타코

댓글을 달아 주세요

Google Developers Group의 지역 모임, GDG 수원의 첫 공식 행사인 안드로이드 해커톤에 다녀왔습니다. 저도 작년 12월에 해커톤을 처음 접해봤었는데요. 참여하신 개발자들의 뜨거운 열정과 번뜩이는 영감은 기본이고, 제가 평소에 생각하고 있던 왜곡되고 편협했던 생각의 오류를 많은 부분 수정했던 시간으로 기억하고 있습니다.

제 주변 분들에게 해커톤 같이 참여하지 않으실래요? 라고 물어보면 대부분이 난감해 하십니다. 하루 만에 뭔가를 만들고 결과를 내야 한다는 것에 약간의 부담을 느끼시는 것 같더라고요. 저도 처음에는 비슷한 생각에 몇 번이고 참여 여부를 놓고 고민했었던 기억이 납니다. 업무로서의 개발이라는 틀에 너무 제 자신을 옭아매고 있었던 탓인데요. 회사에서 데드라인이라는 압박은 개발자에게 엄청난 압력을 행사합니다. 그리고 애교스러운 실수도 용납하지 않는 전쟁터죠?! 시간에 쫓기고, 사람에 치이고, 버그에 시달리고, 오늘따라 컴퓨터는 느리기만 하고, 만약 해커톤도 그런 업무의 또 다른 연장이라고 생각하셨다면 당신은 계몽이 필요한 개발자입니다.

해커톤은 개발의 원초적인 즐거움을 찾아가는 시간입니다. 농구 선수에게 '세 달 동안 새벽 2시까지 연습이야! 그전에는 퇴근할 생각 꿈도 꾸지마!' 라고 감독이 통보하면 농구를 정말 종아하는 선수라도 멘탈 붕괴를 견디기 힘들 것입니다. 비유가 조금 극단적이긴 하지만 많은 개발자가 비슷한 순간에 놓여봤을 것으로 생각합니다. 자의가 아닌 타의에 의한 무한의 업무에 빠져 고속 정주행하고 계시다면 시속 3Km로 감속한 뒤, 1m 25cm만 오른발을 내딛어 보세요. 1년 8,760시간 중 고작 12시간만 정차하시면 됩니다.

다음 해커톤의 슈퍼히어로는 당신이 되길 기대하겠습니다. :D



당일 행사에 대한 더 많은 정보를 얻고 싶으시다면 아래 링크를 따라가세요.



저작자 표시 비영리 변경 금지
Posted by 완소타코

댓글을 달아 주세요

  1. asbubam 2012/05/04 19:53  댓글주소  수정/삭제  댓글쓰기

    싱숭생숭해도, 여기저기 열심히 참가하시는 모습에 반성 또 반성 중 입니다.

얼마 전 구글 플러스를 통해서 구글 코리에서 준비 중인 DevFestX 행사를 알게 됐습니다. 5월 12일(토)에 논현동에 있는 플래툰 쿤스탈레라는 공간에서 진행되는 개발자 행사라고 합니다. 기존의 방식과는 조금 색다른(?) 방식으로 진행될 것이라고 하는데요. 일단 행사 장소가 기대를 불러일으키기에 적절한 것 같습니다. :)

구글 관련 기술 및 오픈소스에 대한 주제가 다뤄질 것 같습니다. (현재 발표자를 모집하고 있는 중) 그리고 다양한 분야의 개발자들과 교류할 수 있는 시간이 될 것 같다는 생각이 드네요. 관심 있으신 분들은 아래 링크에서 관련 정보를 얻으세요.


https://sites.google.com/site/devfestxkorea/
https://plus.google.com/u/0/114049497632097490688/posts


개인적으로 5월 12일에 여러 행사(?)가 겹쳐서 다른 약속은 모든 취소를 했는데, DevFestX 행사는 조금 늦더라도 참석을 하고 싶은 혼자만의 생각.

일단 일찌감치 신청은 완료했습니다만 시간이 허락해야 갈 수 있겠죠? 참, 제가 참여하고 있는 (비록 미미한 활동을 하고 있긴 하지만) Go 언어 사용자 모임에서도 이날 발표를 준비하고 있습니다. Go 언어에 대해서 살펴볼 좋은 기회가 될 것 같습니다. :D

저작자 표시 비영리 변경 금지
Posted by 완소타코

댓글을 달아 주세요


소문으로만 듣던 행주산성 국수 집에 다녀왔습니다. 실제로는 그릇부터 남다른 풍채를 자랑하는데 사진으로는 그저 그런 평범한 국수처럼 나왔네요. 너무 허기진 상태라서 남김 없이 다 먹었습니다. 저 면발들이 제 위속으로 다 들어갈 줄은 상상도 못했는데 역시 인체는 신비롭습니다.


집에서 행주산성까지 그리고 행주산성에서 다시 집까지 왕복 50km 정도가 조금 안되는 것 같습니다. 더 멀리 여행을 가보고 싶은데, 제 미니벨로로는 한계가 있네요. 자전거를 새로 장만해야겠다는 생각과 함께 5월이나 6월에 2박 3일이나 3박 4일 일정으로 자전거 여행을 해볼까 하는 계획도 현재 진행형입니다. 그나저나 겨울 동안 잠들어 있던 몸이 아직도 숙면 중이었는지 이틀이 지난 지금도 허벅지가 뻐근하네요.


저작자 표시 비영리 변경 금지
Posted by 완소타코

댓글을 달아 주세요

  1. 리커버리 2012/04/21 00:47  댓글주소  수정/삭제  댓글쓰기

    아.. 배고프다~ㅡㅡ^

지난 주말에 몽키 핫키 2.0.0 정식 버전 패키징 작업을 완료했습니다. 아래 화면은 제가 집에서 사용하는 노트북에서 캡쳐한 "몽키 핫키"입니다. 집에서는 웹서핑 말고는 거의 하는 일이 없어서 즐겨찾는 프로그램 구성이 다소 조촐합니다. 

처음에는 자주 사용하는 프로그램의 단축키를 "Alt + F1 ~ F12" 혹은 "Ctrl + F1 ~ F12" 조합으로 사용했었는데, 프로그램이 많아지니 어떤 키를 설정했는지 기억 나지 않는 불상사가 발생하더군요. 그래서 요즘은 "Ctrl + Shift + 첫알파벳" 조합을 적극 활용하고 있습니다.

최신 버전인 2.0.0은 아래 사이트에서 내려받을 수 있습니다. 구글 코드 서버 속도가 조금 느리네요. 약간의 인내심이 필요합니다. :D

혹은 RC 버전을 사용하시던 분들은 "정보 > 업데이트" 버튼을 눌러서 2.0.0 버전으로 업데이트 하실 수 있습니다. 수정 사항은 다음과 같습니다.

  • 메인 리스트에서 아이템 개별 삭제 지원
  • 수식 스크롤이 생성된 상태에서 메뉴 전환 시 뷰포트 초기화 되지 않는 버그 수정
  • 숫자 키패드 관련 버그 수정
  • 그 외 기타 버그 수정

실망스러울 수도 있을 만큼 기능 개선 사항은 딱 하나 있네요. 다소 느리지만 꾸준히 업데이트 할 수 있도록 노력하겠습니다. :)

다음 버전에서는 다국어를 지원하고 싶은데, 웹페이지 다국어 처리는 어떻게 하는지 경험이 전혀 없어서 공부를 조금 해야 할 것 같습니다. 틈틈이 공부해서 가까운 시일 내에 다국어 버전으로 인사 드릴 수 있도록 하겠습니다.


저작자 표시 비영리 변경 금지
Posted by 완소타코

댓글을 달아 주세요