관련지식
tty, docker

구글의 쿠버네티스 플랫폼이나 시놀로지 도커의 터미널 기능등, 요즘은 웹에서 shell terminal 을 사용하는것이 보편화 되어있습니다. 웹으로 터미널을 사용할수 있게되면 얻게 되는 장점이 몇가지 있습니다. ssh 포트를 외부로 오픈하지 않아도 되고, 별도 클라이언트 설치가 필요없다는 것입니다. 경우에 따라선 시놀로지 DSM의 시스템 사용자를 만들 필요 없이 자체 인증 시스템을 만들수도 있습니다. 이번엔 시놀로지 도커를 이용하여 브라우저에서 터미널 접속을 할수 이도록 ttyd를 설치해 보겠습니다.

ttyd 를 사용한 이유는 몇가지 사용했던 터미널과 비교했을때 설치가 쉽고, shell color scheme 을 지원하며 텍스트 복사/붙여넣기를 직관적으로 할수 있기 때문입니다.

현재 ttyd 버전 1.5.2

설치

먼저 ttyd 또는 tsl0922 로 검색하여 tsl0922/ttyd 를 다운로드 합니다.

실행을 합니다. 실행할때 포트 설정만 해주시면 됩니다. 저는 로컬 포트를 17681로 고정하였습니다. 이 포트는 브라우저에서 접속할때 사용할 포트입니다.

이제 설치와 실행이 끝났습니다. 브라우저에서 http://NAS아이피:포트 를 입력하시면 쉘 터미널이 보이실 겁니다.

설정

그런데 그대로 사용하시기엔 불편함이 있습니다. 아래 그림과 같이 현재 브라우저로 접속해서 보고있는 터미널은 시놀로지의 터미널이 아니고, 도커로 설치된 ttyd의 가상 쉘 환경입니다. 따라서 원래 목적대로 사용하기 위해선 시놀로지로 다시 접속하는 과정이 필요합니다.

별도의 명령을 매번 입력하는것은 불편하므로 브라우저로 터미널에 접속하자마자 시놀로지로 연결하도록 설정하겠습니다. /root/.bashrc 파일을 수정해야 합니다. ‘echo “ssh -p 포트 시놀로지아이디@시놀로지아이피” >> /root/.bashrc’ 에서 포트, 아이디, 아이피를 각자의 환경에 맞게 수정하여 터미널에 붙여 넣으면 됩니다.

예를들어 시놀로지 아이피가 192.168.0.2, 아이디가 user1, ssh 포트가 22 인 경우 아래와 같이 실행하면 됩니다.

  1. echo "ssh -p 22 user1@192.168.0.2" >> /root/.bashrc

그런데 이 도커에는 ssh가 없기 때문에 추가 설치를 해야 합니다. 먼저 ‘apt-get update’ 를 입력하여 실행합니다.

‘apt-get install ssh-client’ 를 입력합니다. ssh 서버는 필요하지 않습니다.

설치가 끝난후 브라우저를 새로고침 하면 터미널 접속과 동시에 시놀로지로 연결되게 됩니다. 만약 처음 접속하는 경우 아래처럼 메시지가 보이는데 ‘yes’ 입력하고 넘어가면 됩니다.

ssh 로 시놀로지에 연결시 비밀번호 입력이 불편하다고 생각된다면 ttyd 도커와 시놀로지간에 ssh trust 설정을 하여 비밀번호 입력단계를 건너뛸수 있지만 권장하진 않습니다. 최소한의 보안 인증이니까요. 만약 nginx를 사용하고 계신다면 SSL 설정을 적용할수 있고, 특정 웹페이지를 통한 연결만 허용하고 나머진 차단할수 있기 때문에 더욱 좋습니다.

터미널 내용을 복사하고 싶을 경우 텍스트를 드래그해서 선택하는것 만으로 복사가 됩니다. 붙여넣기를 원하실땐 마우스 우클릭을 하시면 메뉴가 나옵니다. 아마 shift+ins, ctrl+ins 키로도 될텐데 제 키보드에는 없어서 확인을 못해봤네요.

이상입니다.