![如何使用 PuTTY 或 SecureCRT 通过网关/代理建立 SSH 隧道到开发服务器?](https://linux22.com/image/544640/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20PuTTY%20%E6%88%96%20SecureCRT%20%E9%80%9A%E8%BF%87%E7%BD%91%E5%85%B3%2F%E4%BB%A3%E7%90%86%E5%BB%BA%E7%AB%8B%20SSH%20%E9%9A%A7%E9%81%93%E5%88%B0%E5%BC%80%E5%8F%91%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%9F.png)
我们设置了一些 unix 机器,以便通过 ssh 访问开发机器,您必须先通过 ssh 进入“user@jumpoff”机器。除了“jumpoff”之外,不允许通过 ssh 从任何地方直接连接到“dev”。此外,两台服务器只允许密钥交换。并且您始终以“build@dev”的身份登录开发机器。
总是这样跳跃很痛苦。我知道可以用 SOCKS 或 Tunnel 等来实现...
我已经设置了一个 FreeBSD VM,我可以使用 unix ssh 工具让一切运行良好。基本上我所做的就是确保我的 vm 的 ~/.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
然后我只需简单地输入“ssh ext-dev”就可以像 Flynn 一样进入。
问题是我无法使用 PuTTY 或 SecureCRT 来实现这一点——老实说,我还没有找到任何真正指导我完成这一过程的教程。我看到很多关于为 Firefox 设置某种代理隧道的文章,但似乎不是同一个概念。我几乎整天都在尝试各种方法,但什么都没用(显然),我的 ssh 知识和 Google 搜索已经用尽了。
我发现这个链接似乎很完美,但对我来说不起作用。“主”连接正常,但“客户端”部分连接不上。它告诉我,远程系统拒绝连接。 http://www.vandyke.com/support/tips/socksproxy.html
我让 VM、PuTTY 和 SecureCRT 都使用相同的公钥/私钥对,以使其一致且更易于调试。
有人能提供在 Windows 中如何执行此操作的直接示例吗?
答案1
使用较新版本的 SecureCRT(本例中我运行的是 7.3.7),操作方法如下:
1.) 建立到跳转服务器 (ext) 的新连接,IP 地址为 1.1.1.1,如示例所示。为该连接命名“跳转服务器”,并将其保存到 Sessions 文件夹中。
2.) 测试您是否可以根据需要连接到跳转服务器。您已指出只能使用 SSH 密钥进行访问:如果您只想输入一次密码,您可能需要使用 ssh-agent 功能导入该密钥(使用“工具”菜单 > “管理代理密钥...” > “添加...”)。
3.) 为您的开发箱设置新连接。与步骤 1.) 一样,使用正确的 IP 地址 - 1.2.3.4(如示例中所示)并将其命名为“开发箱”。将此会话保存在您的 Sessions 文件夹中。测试此连接:它应该此时失败,因为您是直接连接。关闭窗口。
现在您已经拥有了所需的原始信息,但还需要一个额外的步骤,即关联跳转框,因为连接需要经过“跳转框”才能连接到“开发框”。
4.) 右键单击 Sessions 文件夹中的“Development box”连接,然后选择“Properties”。转到“Connection”->“SSH2”,然后单击“Firewall:”下拉选项。单击“Select Session...”,然后从 Sessions 菜单中选择“Jump-off server”,然后单击“OK”接受该值,然后再次单击“OK”退出属性菜单。
现在,这会将您的跳转箱与开发箱关联起来,因此在尝试建立与开发箱的连接时,它将用作中介。即使您在跳转箱上使用的 SSH 端口(例如 65000)与开发箱(例如 22)不同,它也能正常工作,因为 SecureCRT 将只使用您为每个主机设置的配置。
再次尝试“开发框”连接,无论是否打开“跳转框”连接,您都应该发现它可以按您想要的方式工作。
答案2
使用 PuTTY,确保您已启用“代理转发”,并且您的私钥已加载到 Pageant 中。
答案3
看来 PuTTY 0.59 及更高版本支持类似 ProxyCommand 的语法;例如,这篇博文。您很可能不想使用 SOCKS。您需要小心为密钥设置强密码;从您的 OpenSSH 示例中无法清楚看出密钥上是否有密码,或者您是否使用了 ssh-agent 或类似的东西。
答案4
对于那些有兴趣使用 SecureCRT 执行此操作的人来说,这里是:
像往常一样创建 SSH 会话。
在属性中,选择端口转发并单击添加...,确保选中“使用 SOCKS 4 或 5 动态转发”选项,并相应地填写本地地址和端口。
完成。从现在开始,每次使用此会话配置进行 ssh 时,都会自动创建一个隧道,断开连接后,隧道就会消失。与 Linux 机器中的情况非常相似。
享受!