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
- 13260 次点击
发表新评论