Emacs的TRAMP是用来访问scp/ssh/smb服务器上的文件,可以做到像读写本地文件一样编辑远程的文件。以下是我对TRAMP的配置。
(require 'tramp)
(let ((my-tramp-methods nil)
(my-tramp-ssh-method
'("ssh"
(tramp-login-program "ssh")
(tramp-login-args (("%h")
("-l" "%u")
("-p" "%p")
("-e" "none")
("-A")))
(tramp-remote-sh "/bin/sh")
(tramp-copy-program nil)
(tramp-copy-args nil)
(tramp-copy-keep-date nil)
(tramp-password-end-of-line nil)
(tramp-gw-args (("-o" "GlobalKnownHostsFile=/dev/null")
("-o" "UserKnownHostsFile=/dev/null")
("-o" "StrictHostKeyChecking=no")))
(tramp-default-port 22))))
(setq tramp-methods (dolist (elt tramp-methods my-tramp-methods)
(if (string= (car elt) "ssh")
(setq my-tramp-methods (cons my-tramp-ssh-method my-tramp-methods))
(setq my-tramp-methods (cons elt my-tramp-methods))))))
(add-to-list 'tramp-default-user-alist
'(nil "\\`host1\\.com\\'" "labrador"))
(add-to-list 'tramp-default-user-alist
'(nil "\\`host2\\.com\\'" "labrador"))
(add-to-list 'tramp-default-proxies-alist
'("\\`host2\\.com\\'" nil "/ssh:labrador@host3.com:"))
(add-to-list 'tramp-default-method-alist
'("\\`host2\\.com\\'" nil "ssh"))
- 2~23行是为了设置一下tramp-methods中ssh协议相关的内容,使得ssh支持ssh-agent forwarding,这样可以透过一个ssh服务器访问另一个ssh服务器,而不需要输入密码。其中关键起到作用的是第10行的
("-A"),也就是运行ssh的时候打开ssh-agent forwarding功能; - 25~28行设置访问host1.com和host2.com所用的默认用户名;
- 29,30行设置访问host2.com时需要通过host3.com作为代理;
- 31,32行设置访问host2.com所默认用的协议。
- labrador's blog
- 13657 次点击

发表新评论