通过 HTTP/SOCKS 代理建立 SSH 连接

通过 HTTP/SOCKS 代理建立 SSH 连接

我正在尝试在我的笔记本电脑和位于 SOCKS/HTTP 代理服务器后面的工作站之间建立连接,而我无法访问该服务器,也无法配置路由器。至少我需要使用 SSH 进行连接,如果可能的话,还需要使用 VNC 协议。

从我收集到的信息来看(虽然有很多关于相反连接的信息 - 从防火墙或代理服务器后面访问计算机),我需要使用 HTTP 隧道来实现这一点,但我尝试的每次尝试都失败了。我知道代理服务器的地址和端口,但仅此而已。工作站也在网络内使用动态 IP,但由于我无法在该网络上配置端口转发,因此我只能使用 HTTP 和 HTTPS 端口(80 和 443)。

我已经在工作站上设置了动态 DNS(ddclient无 IP),并且我首先尝试测试是否可以从网络外部“看到”工作站:

telnet myworkstation.ddns.net 443
    Trying 192.168.197.8...

这让我相信动态 DNS 已正确设置(IP 确实正确)。我见过一些文档建议螺旋形代理隧道用于隧道,但当我尝试

proxytunnel -p <socks_addr>:<socks_port> -P <user>:<pw> -d myworkstation.ddns.net:443

我得到了error: Socket read error。如果我尝试使用corkscrewSSH 隧道:

ssh -o ProxyCommand='corkscrew <socks_addr> <socks_port> myworkstation.net 443' usar@my-workstation

我得到kex_exchange_identification: Connection closed by remote hostConnection closed by UNKNOWN port 65535

我这里到底遗漏了什么?(两台机器上都使用 Ubuntu)

编辑:

我注意到,在代理服务器后面/在远程网络内,我实际上能够获得

ssh -o ProxyCommand='corkscrew <socks_addr> <socks_port> myworkstation.net 443' usar@my-workstation

工作。这本身并不能实现我从外部访问此工作站的目标,但幸运的是,已经有一个 VPN 服务器,我使用它来验证网络,然后通过 ssh 进入工作站。(我仍然需要代理,因为我被分配了一个与工作站不同子网上的 IP)。

不过,在修修补补时,我注意到实际上至少有两个可用的代理服务器(组织文档在这方面相当差,而且我绝不是这方面的专家)

一个是我可以从网络外部访问的 SOCKS5 服务器ping,另一个是我用来 ssh 进入工作站但无法从互联网上“看到”的代理服务器。

所以我假设我需要链接两个代理服务器才能通过单个 ssh 调用直接访问工作站?我到底在哪里进行远程网络身份验证?

相关内容