通过命令行通过 SOCKS5 代理打开 putty ssh 连接
Posted
技术标签:
【中文标题】通过命令行通过 SOCKS5 代理打开 putty ssh 连接【英文标题】:Open putty ssh connection over SOCKS5 proxy via command line 【发布时间】:2016-08-20 07:48:19 【问题描述】:我尝试。
putty.exe -P port -pw password username@host -nc proxyhost:proxyport
此命令不起作用,我认为它不正确。我尝试了很多此命令的变体,但 putty 用户手册不包含必要的信息。
我尝试连接到我的主机 throw putty UI,它工作正常。
对于 openSSH 类似的命令看起来
ssh -o "ProxyCommand=nc -x proxyhost:proxyport %h %p" -p port username@host
【问题讨论】:
【参考方案1】:如果我是你,我会用 Putty 创建一个“保存的会话”并通过命令行启动它:
putty.exe -load session_name
通过 PuTTY 界面创建“保存的会话”比使用命令行更容易。而且您似乎已经通过 PuTTY 界面使用它。
【讨论】:
另外 putty 将其配置存储在注册表中,使用注册表操作不方便,因为您需要管理员权限。我发现已修补的putty 将其配置存储在文件中。【参考方案2】:尽管这是一个旧线程,但我想加两分钱,因为我发现很难收集所有必要的信息,以便使用putty
命令通过 SOCKS-5 代理建立一个有效的ssh
连接行,这个线程出现在我的结果列表中。
TL;DR
目前无法(从 putty v0.74
开始)使用 putty
或 plink
作为命令行上的代理命令通过 SOCKS-5 代理路由 ssh
流量。对于 Windows,您必须使用 ncat 之类的替代方法,例如:
putty -p <targetport> -proxycmd "ncat.exe --proxy-type socks5 --proxy <proxyhost>:<proxyport> <targethost> <targetport>" <targethost>
详情
putty
GUI 允许配置 SOCKS-5 代理,请参阅putty documentation。
正如answer 中正确说明的那样,BlakBat 可以使用-load
参数通过命令行调用此配置。
命令行参数-proxycmd
触发使用所谓的“本地”代理连接(参见putty documentation again):
> 3.8.3.24 -proxycmd: specify a **local** proxy command
本地代理命令是在本地机器上发出的命令,它将处理代理连接(请参阅the documentation about proxy types)。 ncat 就是这样一个命令,它能够与 SOCKS-5 代理进行交互。
最后,使用plink
/putty
作为代理命令是很有诱惑力的,以避免使用多个工具。
腻子claims 通过-nc
参数提供netcat
实用程序的替代方案,但是putty documentation 声明:
如果您希望本地代理命令与代理主机建立辅助 SSH 连接,然后通过该连接建立主连接,您可能需要 Plink 中的 -nc 命令行选项。
如果您尝试使用 -nc
参数打开 SOCKS-5 连接,您的 SOCKS 服务器日志可能会显示如下内容:
sockd[1234]: info: block(1): tcp/accept ]: 1.2.3.4.4711 1.2.3.5.1080: error after reading 1 byte in 0 seconds: unknown SOCKS version 83 in client request
这表明已尝试打开与 SOCKS-5 服务器的 SSH 会话。
因此,不幸的是,据我所知,您唯一的机会是使用putty
以及类似 netcat 的工具来使用 SOCKS-5 代理建立代理 SSH 连接。
【讨论】:
【参考方案3】:简单,
putty -D 8080 <user_id>@<server_name> -pw <password>
【讨论】:
以上是关于通过命令行通过 SOCKS5 代理打开 putty ssh 连接的主要内容,如果未能解决你的问题,请参考以下文章