= Emacs Tramp = Tramp는 Emacs에서 원격 파일을 편집하는데 사용하는 패키지이다. 예를 들어 Emacs가 설치되지 않은 서버의 파일을 Emacs로 편집하고자 한다면, 로컬 컴퓨터에서 Emacs를 실행하여 Tramp로 접근하여 파일을 읽고 쓸 수 있다. Tramp는 'Transparent Remote (file) Access, Multiple Protocol'의 머리글자를 딴 것이다. 비슷한 기능을 하는 Ange-FTP가 있다. Ange-FTP는 ftp를 이용하여 원격 컴퓨터의 파일을 수정하는데, 이 과정에서 원격 컴퓨터의 계정과 비밀번호가 암호화되지 않은 상태 그대로 전송된다. 악의적인 사용자가 이것을 가로채면 비밀번호가 노출될 위험을 가지고 있다. Tramp는 ssh같은 보안 프로토콜을 사용하여 Ange-FTP의 단점을 보완한다. 이 문서에서는 ssh 프로토콜을 이용하여 Emacs Tramp로 원격지의 파일을 안전하게 편집하는 방법을 정리한다. == 설치방법 == === Tramp 설치 === 당연히 Emacs와 ssh 프로그램이 있어야 한다. Cygwin 환경에서 동작하는 것으로 보아 일반 리눅스/유닉스 환경에서도 동작할 것으로 생각한다. 아직 Tramp는 Emacs의 정식 패키지가 아니다. [http://savannah.gnu.org/projects/tramp/ 소스코드]를 직접 내려받아야 한다. Tramp를 내려받아 적당한 경로에 설치한다. Emacs 시작파일에 다음과 같은 내용을 추가한다. Tramp 관련 파일을 홈 디렉토리의 [[tramp]]라는 디렉토리에 저장했으면 다음과 같이 한다. {{{ (add-to-list 'load-path "~/tramp/lisp") (setq tramp-debug-buffer t) (setq tramp-verbose 10) (setq tramp-default-method "sshx") (require 'tramp) }}} {{{(setq tramp-debug-buffer t)}}}과 {{{(setq tramp-verbose 10)}}}는 Tramp를 설정하면서 발생할 수 있는 에러를 검사하기 위해서 명시적으로 설정했다. === SSH 설정 === Ange-FTP와 달리 ssh를 이용하면 원격 컴퓨터의 계정과 암호 뿐 아니라 전송되는 자료 전체가 암호화되므로 훨씬 안전하다. ssh 프로토콜로 tramp를 구동하려면 현재 컴퓨터에서 ssh를 사용할 수 있어야 한다. 자세한 내용은 ssh 설정 문서를 참고하기 바란다. 특히 중요한 것은, 별도로 계정/암호를 입력하지 않고 바로 ssh로 원격 컴퓨터에 접속할 수 있도록 설정되어야 한다는 점이다. 이와 같은 방법은 여러 문서에서 언급하고 있으므로 여기에서는 별도로 설명하지 않는다. === 원격 컴퓨터 설정 === tramp는 기본적으로 ssh 프로토콜로 전송되는 원격 컴퓨터의 내용을 정규 표현식으로 걸러내서 emacs 에디터에서 사용할 수 있도록 화면에 보여주는 방식이다. 예를 들어 원격 컴퓨터에서 사용자의 로그인 정보를 입력하기 기다리는 상태에서는 {{{Login:}}} 등의 문자열이 원격 컴퓨터에서 ssh를 통해서 전송되기를 기다리는 방식이다. 그렇기 때문에 원격 컴퓨터에서 몇 가지 설정이 필요하다. 먼저 {{{bash}}}등을 사용하는 경우, 셸 프롬프트를 단순하게 설정해야 한다. {{{bash}}}의 프롬프트를 화려하게 바꾸어주는 문서등을 참고하여 셸 프롬프트를 변경한 사용자라면, tramp를 사용하기 위해서 셸 프롬프트를 초기 설정으로 바꾸어 주는 것이 좋다. 또한 로케일 설정도 한글등으로 하지 말고 기본 설정으로 바꾸어 주는 것이 좋다. === 로컬 컴퓨터 설정 === 로컬에서도 마찬가지로 로케일을 기본 로케일로 설정하는 것이 좋다. === 실행 === 모든 준비가 끝났으면, Emasc에서 eshell 모드나 셸 모드로 들어가서 ssh 명령이 제대로 돌아가는지 확인한다. 암호나 계정정보를 별도로 입력할 필요 없이 바로 ssh로 접속할 수 있다면 이제 tramp를 사용할 수 있는 환경이 설정된 것이다. 원격에 있는 파일을 불러올 때는 일반적으로 파일을 불러올 때 사용하는 명령 C-x C-f을 그대로 사용하면 된다. 다만, 원격 컴퓨터의 경로라는 것을 명시해야 한다. 예를 들어서 {{{alice}}}라는 사용자가 원격 {{{foo.bar.com}}}에서 홈 디렉토리에 있는 {{{~/public_html/hodgepodge/index.html}}}를 편집하고자 한다면 다음과 같이 파일을 불러들인다. {{{ C-x C-f /alice@foo.bar.com:public_html/hodgepodge/index.html }}} == 바깥고리 == * [http://savannah.gnu.org/projects/tramp/ 공식 홈페이지] * [http://www.gnu.org/software/tramp/ 사용 설명서] ---- CategoryEmacs