2011-06-06 83 views
3

我試圖在Emacs中編輯遠程文件,並且我無法從the documentationprevious SO questions獲取我想要的內容。通過網關使用Emacs和Tramp訪問遠程主機

我從遠程工作,從各種位置,我想編輯服務器Foo上的文件。 Server Foo不能從Internet直接訪問,但服務器Bar是,而Foo接受來自Bar的連接。我可以指望達到Bar,Bar可以指望達到Foo。

流浪者文檔告訴我,我需要添加到流浪漢的代理列表要做到這一點,那它應該看起來像下面這樣:

(add-to-list 'tramp-default-proxies-alist 
    ("foo_host" "seanm" "/ssh:[email protected]_host")) 

然而,當我嘗試,這是行不通的,並且我得到難以理解的錯誤消息。

  • 我該如何明確提及Foo?沒有DNS服務器知道如何從其主機名查找Foo,而Foo的IP地址位於10.0.0.0/8私有空間中。我不想用這個IP地址來引用Foo,因爲這可能會影響到我可能訪問的其他10.0.0.0/8網絡中的主機。作爲一個kludge,我將Foo添加到Bar的/ etc/hosts文件中,但似乎並不奏效。有更好的解決方案嗎?

  • 我需要遵守什麼引用規則?我看到的例子使用「雙引號」和「單引號」引號,後者顯然需要雙反斜線轉義。我不明白那裏發生了什麼 - 看起來有多層解析,這個字符串將被推倒。

  • 嘗試對此進行更改時,我得到的錯誤消息相當於「您無法在該場景中使用該遠程訪問方法」。我如何設置第二個代理方法,讓我可以做相當於C-x C-f /su::/path/to/file

與以前的多跳語法相比,這一切看起來都非常痛苦。

後來:我能夠得到許多轉義層,以便emacs正確'聽到'主機的名稱。但是,我無法在一秒之內獲得任何跳數來正常工作,這是功能非常令人失望的失誤。

+3

雖然這是可能的IIRC,另一種方法是配置SSH通過酒吧到達Foo。在OpenSSH中,使用'Host'別名和'ProxyCommand'選項;您會在[Super User](http://superuser.com/),[Unix](http://unix.stackexchange.com/)或[Server Fault](http:// serverfault)上找到大量示例。 COM /)。 – Gilles 2011-06-06 23:37:03

+0

這對於第一個和第二個問題是非常有幫助的,但它看起來並不像它會幫助重複'/ su ::/path/to/file'的功能。 – 2011-06-07 00:44:20

+1

原則上我應該能夠在elisp中完成這件事。 – 2011-06-07 15:34:53

回答

1

正確的答案證明是用Host,HostAlias和ProxyCommand指令修改我的SSH配置。

相關問題