使用ProxyCommand通过多个主机进行SSH?


11

我在家中的计算机上的〜/ .ssh / config中有一个条目,如下所示:

host foo bar
    ProxyCommand ssh -x -a -q gateway.example.com nc %h 22

在哪里gateway.example.com工作的服务器同时连接到公共Internet和内部网络。网关框使用/ etc / hosts中的条目解析foo和bar。

我的问题是我需要到达另一侧的盒子foo。我们称之为“巴兹”。“ baz”主机位于foo连接到的另一个专用网络上,而不是“ gateway”连接到的另一个专用网络上。

我试过使用这个:

host baz
    ProxyCommand ssh -x -a -q gateway/example.com ssh foo nc %h 22

但这是行不通的,而且我有点不了解。我该怎么做呢?

我认为这并不重要,但是我正在Ubuntu 10中执行此操作。

Answers:


13

简单。

假定以下网络设置:

网络设置示例

您应该能够使用一个看起来像这样的〜/ .ssh / config文件:

host foo bar
    ProxyCommand ssh -x -a -q gateway.example.com nc %h 22

host baz
    ProxyCommand ssh -x -a -q foo nc %h 22

这里的想法是您的SSH 确实知道如何进入“ foo”,因此那里的SSH将成功。从那里,您可以“ nc”到baz。而且,如果内部专用网络上还有其他主机(位于“ baz”旁边),则可以将它们添加到“ host baz”行中。

基本上,将主机“ foo”视为“ baz”的网关,就像“ gateway”是“ foo”的网关一样。

明确?


13

关于ghoti的回答:不是使用netcat的("ssh ... nc %h 22"),开始在OpenSSH 5.4,您可以直接做到这一点:"ssh -W %h:22 ..."。这样,您不必担心netcat是否安装在正确的位置。


1
很好,谢谢。这是一个古老的问题,但我还想澄清一下,当我在工作站上运行Ubuntu时,服务器“网关”是具有OpenSSH 5.3的旧Busybox Linux,服务器“ foo”和“ baz”是FreeBSD(OpenSSH 5.4)。因此,无论如何,我至少需要一个网猫。
格雷厄姆

@Graham不。只有客户端需要5.4或更高-W才能工作。它依赖于服务器端的端口转发代码,后者更老。
卡巴斯德'16

1

使用存储在本地计算机上的私钥,输入此命令,并将私钥路径,shell用户名和主机名/ IP地址更改为您的local-> gateway-> destination ssh需要。

请注意,相对于代理转发,ProxyCommand更可取,以减轻在网关/跳线被根劫持时损害私钥身份验证的风险(使用网关和本地ssh代理连接来危害其他主机,就像劫机者拥有私钥一样)。

将SSH代理到服务器的单个命令(保留本地计算机上的两个私钥):

sudo ssh -i dest_private_key.pem -o "ProxyCommand ssh -W %h:%p -i gate_private_key.pem gate_user@gate_IP" dest_user@dest_IP 

0

这就是我要跳出受保护的网络访问Internet的方法。

我正在使用笔记本电脑在build上处理代码。由于构建受到Internet访问的限制,因此要从github.com克隆存储库,我首先需要跳入toolbox,该工具箱也没有Internet访问。但是它可以访问具有Internet的gw

像这样:

SSH跳跃原理图

.ssh/config构建

Host gw
  ProxyCommand ssh -A -W %h:%p toolbox

Host github.com
  ProxyCommand ssh -A -W %h:%p gw

说明。

  1. 观点来自build。其他服务器上没有任何配置。
  2. 首先,我声明,要进入gw,您需要通过toolbox进行操作
  3. 其次,我声明,要访问github.com,您需要通过gw进行操作。SSH内部使用以前的规则。
  4. 最终,git clone git@github.com:aRepo/There一切正常!

明确?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.