我知道关于端口转发有很多信息,但这是我的具体的情况。
我需要使用 Remote in(通过 VNC)连接到我的 Mac。默认情况下,Mac 远程共享服务器监听端口 5900。这很好,只是我的公司阻止了端口 5900 的传入连接!
但是,它允许端口 3389。所以我想做的是进行设置,以便我可以监听端口 3389 上的连接并将它们转发到 5900。
以下是我尝试过的:
ssh 127.0.0.1 -L3389:127.0.0.1:5900
这并不能完全满足我的要求,因为只有来自 127.0.0.1 的连接才会被端口 3389 接受。
netstat -an | egrep 'Proto|LISTEN'
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp6 0 0 *.5900 *.* LISTEN
tcp4 0 0 *.5900 *.* LISTEN
tcp4 0 0 127.0.0.1.3389 *.* LISTEN
*
我需要在端口 上监听世界3389
。我该如何实现?
答案1
您的问题缺乏具体细节,如果不知道以下几点就很难直接回答:
您可以从外部(例如朋友家,您的工作不会阻止您)连接到默认 VNC 端口吗?如果可以,您可以将 VNC 监听的端口更改为 3389 并进行测试。 如何更改 Mac OS X 上的默认屏幕共享/VNC 端口号?
您提到的 ssh 命令需要从连接的机器而不是“服务器”运行。因此,您需要运行:
ssh address.of.your.mac -L9999:127.0.0.1:5900
然后将 VNC 连接到客户端计算机上的 localhost:9999。我使用 9999 作为示例,因为它可能未被使用,如果您的客户端是 Mac,则可能是 5900,如果您的客户端是 Windows,则可能是 3389。
要明确的是:您需要能够在工作时通过 ssh 进入您的 Mac,-L 后面的数字是您在连接机器 (localhost) 上连接的端口,127.0.0.1:5900 是 VNC 已经在您的 (远程) Mac 上监听的位置。
- 我还会考虑使用 VPN 来绕过工作限制(以及出于安全考虑)。OpenVPN 可以轻松在端口 443(HTTPS)上运行,该端口可能被允许,并且如果您的工作以这种方式限制 Web 访问,它甚至可以在代理服务器上工作。设置它并不太难,但超出了这个问题的范围。
答案2
launchd
您可以更改监听 VNC 连接的端口,而不是进行端口转发。(launchd
代表进行监听,并在连接尝试进入时screensharingd
启动)。screensharingd
screensharingd
是 OS X 中的默认 VNC 服务器。如果您使用 Apple Remote Desktop(又名 ARD,“远程管理”),则这些说明可能需要稍作修改。
编辑/System/Library/LaunchDaemons/com.apple.screensharing.plist
查找此键/值对:
<key>SockServiceName</key>
<string>vnc-server</string>
并将其改为:
<key>SockServiceName</key>
<string>3389</string>
然后您可能需要重新启动或强制launchctl
重新launchd
加载该 plist。
然后,在您的 VNC 客户端中指定 3389 端口。例如,OS X 的内置 VNC 客户端使用 URL,因此您可以将其交给。或者省略 ,以便系统提示您。vnc://username:[email protected]:3389/
username:password
读者须知:我本人没有尝试过,因此请自行承担风险。在编辑 plist 文件之前,请考虑备份该文件,这样可以轻松将其恢复原状。
答案3
您可以尝试-D
使用 ssh 选项,即动态端口转发。因此,这可能看起来像:ssh -D 3389 [email protected]
我昨天做了这个,现在从记忆中回想起来,但这就是它的基本原理。一旦此命令起作用,您只需输入密码并配置您的应用程序以监听指定的端口 - 在您的情况下为 3389,IP 地址为 127.0.0.1。
我认为这会使用 ssh 创建一种 SOCKS 代理。
:D