在Sublime Text 3中通过多跳ssh编辑文件

时间:2017-02-06 21:29:09

标签: macos ssh sublimetext3

我想知道是否可以通过多跳SSH隧道编辑Sublime Text 3的文件。在我的特殊情况下,我有我的Mac(我们称之为A)和两台Linux机器:B和C.文件位于C中,我用我的机器访问它们:

A -> B -> C

我发现这些文章可以提供帮助,但他们只讨论在B中编辑文件。

How to open remote files in sublime text 3

Editing files remotely via SSH on SublimeText 3

根据这些文章,我可以编辑B中的文件,在远程机器中安装rsub,在Sublime中编辑插件。我试图在C中执行此操作(是的,我知道它不是那么有用,但谁知道呢?但我得到了错误:

user@remote-C:~$ rsub
/usr/local/bin/rsub: connect: Connection refused
/usr/local/bin/rsub: line 327: /dev/tcp/localhost/52698: Connection refused
Unable to connect to TextMate on localhost:52698

我很高兴知道是否有办法实现这一目标。提前谢谢。

2 个答案:

答案 0 :(得分:2)

我会回答自己。解决方案是在A的ssh配置文件中使用CBProxyCommand之间使用~/.ssh/config进行SSH隧道连接。

我添加了这些内容:

Host myMachineC
    HostName NAME_OF_MACHINE_C
    ProxyCommand  ssh USER_IN_B@NAME_OF_MACHINE_B nc %h %p
    User USER_IN_C
    RemoteForward 52698 localhost:52698 # this is required by rsub

Host定义了在HostName指令之后写入的真实主机名的别名。 ProxyCommand是您尝试登录myMachineC时执行的命令。 nc是一个命令......

  

...默认情况下,在侦听模式(服务器套接字)或用于连接服务器的套接字(客户端模式)中创建TCP套接字[1]

现在只需输入以下内容即可从C访问计算机A

$ ssh myMachineC

建议您已经允许无密码登录。为此,您需要将家用计算机上的公钥安装到每台主机的〜/ .ssh / authorized_keys中。 [2]

总之:通过所有这些过程,将与中间计算机B建立正常的SSH连接,然后nc将用于将连接扩展到C。使用此隧道,客户端可以像使用ssh直接连接一样。与rsub一起使用时非常有用。

然后,您应该正常安装和使用rsub,它将像魅力一样工作。

我在OSX Yosemite中试过这个,但几乎可以在任何* nix系统中运行。我希望它对你有用。

Netcat Explanation and Examples

Transparent Multihop in SSH

答案 1 :(得分:1)

接受的解决方案对我不起作用,因为我将Host B用作存储我的SSH密钥的SSH服务器。另外,我的SSH密钥具有密码,因此ProxyCommand命令无法使用。

但是有一种更简单的方法。

您可以将以下内容添加到主机B上的.ssh / config文件中;

Host *
RemoteForward 52698 localhost:52698

您可以定义特定主机或为所有主机提供*通配符。这将为来自主机B的所有SSH会话转发端口52698。