如何在 Windows 中使用 PuTTY 创建 SSH 隧道?

Posted

技术标签:

【中文标题】如何在 Windows 中使用 PuTTY 创建 SSH 隧道?【英文标题】:How to create SSH tunnel using PuTTY in Windows? 【发布时间】:2011-06-25 20:07:56 【问题描述】:

我需要在 Windows 中使用 PuTTY 创建 SSH 隧道,这与 Linux 中的此命令相同:

ssh -fN -L 2000:SomeIp:2000 myusername@myLinuxBox

我在 PuTTY 中尝试了许多选项,包括将 GUI 中的源端口设置为“2000”,将目标端口设置为“SomeIp:2000”。目的地设置为本地(正如-L 开关所建议的那样)。

我成功登录到我的 SSH 框,但没有进行端口转发。

这在 Windows 中是否可行,以便使用此端口 (2000) 的程序建立的所有连接都将通过此隧道?

【问题讨论】:

【参考方案1】:

使用 PuTTY 套件,您可以使用 PuTTY 本身 (GUI) 或使用命令行工具 plink.exe 设置隧道。


对于plink.exe,您可以使用与OpenSSH ssh 相同的参数,但-f 除外,它在Windows 中没有等效参数。

plink.exe -N -L 2000:SomeIp:2000 myusername@myLinuxBox

参考:Using the command-line connection tool Plink


使用 PuTTY,-L 2000:SomeIp:2000 转换为:

所以实际上,你声称已经尝试过。如果您有任何问题,请使用 PuTTY 事件日志进行调查:

-N 转换为选项“根本不启动 shell 或命令”

但是使用 GUI 客户端启用它可能没有意义,因为无论如何你都会得到一个窗口,你不能用它做任何事情。另请参阅PuTTY wish no-terminal-window。


如果您打算使用隧道将 PuTTY 连接到另一台服务器,您实际上可以使用plink 作为代理将隧道设置为会话设置的一部分,请参阅:PuTTY configuration equivalent to OpenSSH ProxyCommand。

【讨论】:

【参考方案2】:

您可能希望使用plink.exe 而不是 GUI 客户端。命令行语法兼容iirc。

【讨论】:

我试过 plink ,但似乎端口没有转发。登录远程 sshbox 后如何检查端口是否转发? 我不知道有任何服务器端命令可以查看客户端创建了哪些隧道。也许有服务器故障的人可以帮助你:-)。 关于排查:本地端口转发规则只在本地打开一个监听端口。在您实际尝试连接到本地端口之前,不会创建转发(因此在远程端没有检测到任何东西)。【参考方案3】:

或者您也可以浏览 putty GUI,它也允许这样做。请参阅左侧的Connection > SSH > Tunnels 选项树。

【讨论】:

我已尝试从 GUI 设置许多不同的 optins,但 forward 仍然无法正常工作。登录 sshbox 后如何显示所有转发?【参考方案4】:

上面的答案提到了解决问题的两种不同方法:

使用 plink 使用 putty GUI

我没有 plink,也无法下载 plink.exe 文件(这是一个受到严密监控的受限环境),因此使用了一种不同的方式来使用单行脚本编写解决方案:

start putty -ssh myusername@myLinuxBox -pw my_pw -L 2000:localhost:2000

将其存储在批处理文件中(文件扩展名为“.bat”,例如“tunnel.bat”)。因此,每次双击此文件时,都会运行命令,并且 putty 会创建 ssh 隧道。如果您想要更多隧道,请重复此部分

-L 2000:localhost:2000

通过相应地更改端口。

【讨论】:

好的,但这与 Plink 的作用相同。 @MartinPrikryl 当然。但是,我无法安装 plink,因为我没有权限。但我确实有腻子,想编写解决方案的脚本。这就是我的答案。 好的,所以也许在你的回答中提到这一点。 Ntb,Plink 不需要任何安装,直接抓取 .exe 文件即可。 @MartinPrikryl 谢谢 - 编辑完成。 Exe 下载被防火墙阻止,所以对我来说,这是编写解决方案脚本的唯一方法。【参考方案5】:

“源”端口是运行 putty 的同一台机器上的端口号(例如,在浏览器中打开:127.0.0.1:source)。 “目标”是您要从本地计算机连接到的远程端口。在我意识到这一点后,它开始起作用了。

【讨论】:

以上是关于如何在 Windows 中使用 PuTTY 创建 SSH 隧道?的主要内容,如果未能解决你的问题,请参考以下文章

如何在MacOS上创建ssh隧道? [关闭]

在 Windows 中使用 PuTTY SSH 到 Amazon EC2 实例

OpenSSH生成的私钥如何在putty中使用?

请问如何配置virtualbox使得可以在windows中可以使用putty连接Ubuntu

如何通过 PuTTy 使用命令行将文件从 Windows 机器上传到 Linux 机器?

WSLGit on Windows Putty等的创建的rsa秘钥与连接linux的使用。