【问题标题】:Using vim to remotely edit a file on serverB only accessible from serverA使用 vim 远程编辑服务器上只能从服务器访问的文件
【发布时间】:2012-09-10 06:46:37
【问题描述】:

虽然我从未尝试过,但显然可以按照here 的描述在 vim 中远程编辑文件。在我的特殊情况下,我需要访问的服务器只能从校园访问,因此我必须像这样登录我的大学帐户:

ssh user@login.university.com

然后从那里登录到安全服务器,如下所示:

ssh user@secure.university.com

我已经设置了无密钥 ssh,所以我可以像这样自动化这个过程:

ssh user@login.university.com -t "ssh user@secure.university.com"

是否可以在我的本地计算机上远程编辑诸如secure.university.com/user/foo.txt 之类的文件?

编辑:

我的意图是在我的本地机器上使用 vim,因为它不切实际(移动 .vim folder,复制 .vimrc)并且在某些情况下是不可能的(使用某些设置重新编译 vim,修补 vim 源代码,安装语言美化器)远程机器上的 vim 按照我希望的方式运行。我想要的是发出这样的东西(这不是准确的scp,我知道)

vim scp://user@login.university.com scp://user@secure.university.com//home/user/foo.txt

【问题讨论】:

    标签: vim ssh remote-access scp


    【解决方案1】:

    在机器上进行 SSH 连接后,您可以在 shell 的远程主机上运行任何命令(也包括 vim)。在你的机器上运行日志后运行 vim。

    【讨论】:

      【解决方案2】:

      由于您使用的是 ssh,因此您基本上可以通过 CLI 访问服务器,就好像您坐在机器本身前面一样。话虽如此,您可以在该机器上使用任何程序,就像在您自己的机器上使用它一样。假设secure.university.com/user/foo.txt表示安全服务器上的/user位置有一个名为foo.txt的文本文件,那么通过ssh登录后,以下命令将起作用:

      cd /user
      vim foo.txt
      

      您还可以使用安装在机器上的 nano 或任何其他基于 CLI 的编辑器。

      【讨论】:

      • 很抱歉,我想在 vim 中远程编辑的内容肯定不够清楚。我将更新我的问题以反映这一点
      【解决方案3】:

      好吧,经过一番努力,我想通了。首先,您必须按照here 的描述编辑(或创建)您的.ssh/config 文件。出于我们的目的,我们将添加这样一行,它本质上添加了一个代理。

      Host secure
        User          Julius
        HostName      secure.university.com
        ProxyCommand  ssh Tiberius@login.university.com nc %h %p 2> /dev/null
      

      然后我们可以像这样简单地将文件secure.university.com:/home/Julius/fee/fie/fo/fum.txt复制(通过scp)到本地计算机

      scp secure:/home/Julius/fee/fie/fo/fum.txt fum.txt
      

      对此进行扩展,我们可以像这样远程将其加载到 vim 中:

      vim scp://secure//home/Julius/fee/fie/fo/fum.txt
      

      或者像这样使用badd

      :badd scp://secure//home/Julius/fee/fie/fo/fum.txt
      

      为了简化我的生活,我将此快捷方式添加到我的.vimrc 文件中,用于最常用的子文件夹:

      nnoremap <leader>scp :badd scp://secure//home/Julius/fee/fie/fo/fum.txt
      

      到目前为止,已经证明 vim 非常清楚这是一个远程文件,所以如果 C 文件包含这样的文件:

      #include "foo.h"
      

      它不会抱怨缺少“foo.h”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多