如何使用PuTTY或SecureCRT通过网关/代理SSH隧道到开发服务器?

我们有一些unix方式设置,通过ssh进入开发箱,你必须先ssh进入“user @ jumpoff”方块。 除了'jumpoff'之外,没有通过ssh从'dev'直接连接的任何地方。 而且,两台服务器只允许密钥交换。 而且你总是以“build @ dev”的身份login到开发箱。

总是这样做是痛苦的。 我知道这可以完成SOCKS或隧道或其他…

我已经安装了一个FreeBSD虚拟机,使用unix的ssh工具,我可以让这些工作变得很棒。 基本上我所做的只是确保我的虚拟机的〜/ .ssh / id_rsa.pub键同时在jumpoff和dev上,并使用〜/ .ssh / config文件:

# Development Server Host ext-dev # this must be a resolvable name for "dev" from Jumpoff Hostname 1.2.3.4 User build IdentityFile ~/.ssh/id_rsa # The Jumpoff Server Host ext Hostname 1.1.1.1 User daevid Port 22 IdentityFile ~/.ssh/id_rsa # This must come below all of the above Host ext-* ProxyCommand ssh ext nc $(echo '%h'|cut -d- -f2-) 22 

然后,我只需input“ssh ext-dev”,我就像Flynn一样。

问题是我无法使用PuTTY或SecureCRT获得同样的效果 – 说实话,我还没有发现任何教程能够真正帮我实现。 我看到许多为Firefox设置某种代理隧道,但它似乎并不是一个概念。 我一整天都在搞各种各样的试验和错误,没有任何工作(显然),而且我在我的ssh知识和Googlesearch结束。

我发现这个链接似乎是完美的,但它不适合我。 “主”连接正常,但“客户端”部分不连接。 它告诉我,远程系统拒绝连接。 http://www.vandyke.com/support/tips/socksproxy.html

我有VM,PuTTY和SecureCRT都使用相同的公钥/私钥对,使事情一致,更容易debugging。

有没有人有直接了解如何在Windows中做到这一点的例子?

使用PuTTY,确保您启用了“代理转发”,并且您的私钥在Pageant中加载。

看来PuTTY版本0.59和更高版本支持类似ProxyCommand的语法; 例如,看这个博客文章 。 你很可能不想使用SOCKS。 你要小心强大的密钥, 从你的OpenSSH的例子来看,你是否有密码或者你是否使用了ssh-agent或类似的密码。

使用一个相当新的SecureCRT版本(我为这个例子运行7.3.7),这里是你如何做到这一点:

1.)build立一个到你的跳转服务器(ext)的新连接,IP地址为1.1.1.1,如你的例子所示。 为连接指定一个名称,“Jump-off server”,并将其保存在Sessions文件夹中。

2.)testing您可以根据需要连接到跳转服务器。 您已经指出只能使用SSH密钥访问:您可能需要使用ssh-agentfunction导入该密钥(使用“工具”菜单>“pipe理代理密钥…”>“添加…”)if你只想input一次你的密码。

3.)为你的开发箱设置一个新的连接。 与步骤1)一样,使用正确的IP地址 – 1.2.3.4,如您的示例所示 – 并将其命名为“开发框”。 将此会话保存在Sessions文件夹中。 testing这个连接:它应该在这一点上失败,因为你直接连接。 closures窗口。

现在你有了所需要的原始信息,但是需要一个额外的步骤来关联跳出框,因为连接需要经过“跳出盒”以连接到“开发盒”。

4.)右键单击Sessions文件夹中的“Development box”连接,然后select“Properties”。 转到“连接” – >“SSH2”并点击“防火墙:”下拉选项。 点击“select会话…”,然后从会话菜单中select“跳出服务器”,然后点击“确定”接受该值,然后再次“确定”退出属性菜单。

这现在将您的跳转盒与您的开发盒相关联,所以它在尝试与开发盒build立连接时用作中介。 它甚至可以工作,如果你的popup框(例如65000)与你的开发盒(例如22)有不同的SSH端口,SecureCRT将简单地使用你为每个主机设置的configuration。

再次尝试“开发盒”连接,打开或closures“跳出盒”连接,您会发现它可以正常工作。

对于那些对SecureCRT感兴趣的人,这里是:

  1. 像往常一样创build一个SSH会话。

  2. 在属性中,select端口转发,然后单击添加…,确保选中“使用SOCKS 4或5的dynamic转发”选项,相应地填写本地地址和端口。

  3. 完成。 从现在开始,每次你用这个会话configurationssh时,都会自动创build一个隧道,当你断开连接的时候,隧道就不存在了。 几乎和在Linux中一样。

请享用!