代码之家  ›  专栏  ›  技术社区  ›  puk

使用vim远程编辑服务器B上只能从服务器a访问的文件

  •  5
  • puk  · 技术社区  · 12 年前

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

    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
    
    3 回复  |  直到 12 年前
        1
  •  4
  •   Community davidgyoung    7 年前

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

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

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

    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”

        2
  •  0
  •   user26732    12 年前

    一旦你在机器上SSHed,你就可以在shell上的远程主机上运行任何命令(也是vim)。在记录后,运行vim,就像你在你的机器上运行一样。

        3
  •  0
  •   Zistack    12 年前

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

    cd /user
    vim foo.txt
    

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