我正在尝试在我的笔记本电脑和位于 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
。如果我尝试使用corkscrew
SSH 隧道:
ssh -o ProxyCommand='corkscrew <socks_addr> <socks_port> myworkstation.net 443' usar@my-workstation
我得到kex_exchange_identification: Connection closed by remote host
和Connection 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 调用直接访问工作站?我到底在哪里进行远程网络身份验证?