TRAMP로 원격 파일을 로컬 파일처럼 편집

less than 1 minute read

nil

ssh 프로토콜로 로그인해서 파일 편집을 하는데, emacs가 안 깔려있다고? 허허허. apt-get 명령은 잠시 접어두게. TRAMP(Transparent Remote file Access, Multiple Protocol) 패키지를 사용하면 원격 파일을 로컬 파일처럼 transparent 하게 수정할 수 있다.

C-x C-f /method:host:/path/to/file

tramp로 파일을 여는 명령은 따로 없다. find-file 명령에 녹여져 있다. 평소에 입력하는 패스 앞에 method와 host를 덧붙이면 된다.

C-x C-f /ssh:root@localhost <TAB>

패스워드 방식이나 디폴트 경로에 있는 identity file(private key)을 로그인에 사용하면 잘 동작한다. 하지만 identity file이 ~/.ssh/id_rsa가 아니라면 어떻게 해야 할까? identity file 경로를 입력할 방법이 없다.

$ cat ~/.ssh/config
Host default
  HostName 127.0.0.1
  User vagrant
  Port 2200
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /Users/ohyecloudy/test/tramp-test/.vagrant/machines/default/virtualbox/private_key
  IdentitiesOnly yes
  LogLevel FATAL

ssh config 파일을 사용하면 된다. 글을 쓰면서 vagrant로 가상 머신을 설치했다. 간단히 vagrant ssh-config >~/.ssh/config 명령으로 ssh config 파일 세팅을 했다.

C-x C-f /ssh:default:<TAB>

이제 이렇게 입력하면 로컬 디렉터리처럼 파일 이름 후보를 출력한다. 원격 파일을 로컬 파일처럼 편집하고 저장하면 원격 파일에 반영은 TRAMP가 알아서 해준다.

Update <2018-12-24 Mon> macOS에서 : 문자 입력하고 탭키를 눌러야 접속해서 후보를 보여준다.

참고

C-x C-s C-x C-c