有人可以帮我设置Emacs Tramp做双跳吗? 我想在machine2.abc.def.edu上工作,我只能通过machine1.abc.def.edu连接到它。我的用户名是myname,在两台机器上都是。
我试图添加.emacs:
(add-to-list 'tramp-default-proxies-alist
'("\\`machine2\\.abc\\.def\\.edu\\'"
"\\`myname\\'"
"/ssh:machine1\\.abc\\.def\\.edu:"))
这是我对手册中内容的最佳猜测。然后我做: C-x C-f /ssh:machine2.abc.def.edu 要么: C-x C-f /ssh:rsuhada@machine2.abc.def.edu
但两人都给出了:
ssh: Could not resolve hostname ssh: nodename nor servname provided, or not known
Process *tramp/scpc ssh* exited abnormally with code 255
我的Aquamacs不能退出,不得不从贝壳中杀死......这里有两年的线索同样的问题。我从那里尝试了答案:
(add-to-list 'tramp-default-proxies-alist
'("machine2.abc.def.edu"
nil
"/ssh:myname@machine1.abc.def.edu:"))
同样的结果......对于我可以提出的所有组合......在machine1.abc.def.edu上进行远程编辑工作正常。
答案 0 :(得分:10)
使用ssh_config中可用的ssh_proxy命令的答案。记录here和here。基本上,您在ssh文件夹中创建一个配置文件,您可以在其中编写快捷方式。您的一个快捷方式是通过另一个端点使用代理。所有快捷方式都适用于使用ssh的任何工具,包括git和emacs。
Host endpoint2
User myusername
HostName mysite.com
Port 3000
ProxyCommand ssh endpoint1 nc -w300 %h %p
Host endpoint1
User somename
HostName otherdomainorip.com
Port 6893
在此示例中,运行ssh endpoint2
将自动跳过endpoint1。
答案 1 :(得分:4)
好吧,让我们尝试不同的东西,不用打开隧道。 .emacs文件中的以下内容如何:
(add-to-list 'tramp-default-proxies-alist
'("\\`machine2\\'"
nil
"/ssh:%u@machine1.abc.def.edu:"))
这与您在论坛帖子中找到的代码有两点不同:
当您尝试访问machine2上的文件时,这会有帮助吗?
答案 2 :(得分:2)
设置从machine1到machine2的ssh隧道(假设sshd在machine2上的端口22上运行):
machine1.abc.def.edu> ssh -f -N -L 2222:localhost:22 machine2.abc.def.edu
然后从Emacs连接到machine2,如下所示:
/ssh:machine1.abc.def.edu#2222
或将以下行添加到.emacs:
(add-to-list 'tramp-default-proxies-alist
'("\\`machine2\\.abc\\.def\\.edu\\'" nil
"/tunnel:machine1.abc.def.edu#2222:"))