我的工作电脑是一台名为 WORKPC 的 Windows 7 企业版电脑,它正在运行远程桌面。我已在 WORKPC 上配置了 Windows 防火墙,以仅允许从两个 IP 地址访问远程桌面服务:IP1 和 IP2。
IP1 来自一个商业 VPN 服务,它为我分配了一个静态 IP 地址。当我回家并运行 VPN 客户端时,我可以使用 Remote Dekstop 客户端毫无问题地连接到 WORKPC。
IP2 是工作时 Linux 服务器 GATEWAY 的地址,我可以从家里通过 ssh 进入。为了使用 IP2 远程桌面连接到 WORKPC,我在 IP2 上使用 ssh 和端口转发:
ssh -vvv -L 1234:WORKPC.example.org:3389 GATEWAY.example.org
当我尝试使用此端口转发技术从家里访问远程桌面时,我的 ssh 连接上出现以下错误:
debug1: Connection to port 1234 forwarding to WORKPC.example.org port 3389 requested.
debug2: fd 9 setting TCP_NODELAY
debug3: fd 9 is O_NONBLOCK
debug3: fd 9 is O_NONBLOCK
debug1: channel 3: new [direct-tcpip]
channel 3: open failed: connect failed: Connection timed out
为了验证端口 3389 是否在 GATEWAY 上打开,我执行了 telnet 3389 并建立了连接,因此我确信 WORKPC 上的端口 3389 对 GATEWAY 开放。
以下是配置信息:
# /etc/ssh/sshd_config
# sshd running on Debian wheezy
Port 22
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
LoginGraceTime 300
MaxAuthTries 5
IgnoreRhosts yes
RSAAuthentication no
PubkeyAuthentication no
RhostsRSAAuthentication no
HostbasedAuthentication no
ChallengeResponseAuthentication yes
PasswordAuthentication no
UsePAM yes
PermitEmptyPasswords no
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
TCPKeepAlive yes
Subsystem sftp /usr/lib/openssh/sftp-server
我更愿意使用 ssh 代理方法,而不是付费使用商业 VPN 服务来租用静态 IP 地址。有人能建议我可以尝试的方法吗?
答案1
名称WORKPC.example.org
在 GATEWAY 上解析正确吗?转发端口时,目标在服务器上解析,而不是在客户端,因此任何主机名错误都会产生您描述的症状。尝试在 ssh 命令行中使用 WORKPC 的 ip 地址。
WORKPC 是否只有公共 IP 地址,或者它是否有通过防火墙进行 NAT 的私有内部 IP 地址?如果 GATEWAY 看到私有内部 IP 地址,那么您应该使用该地址来设置 SSH 隧道。
答案2
你的 ssh 命令可能需要一个帐户名,例如:
ssh -L 1234:WORKPC.example.org:3389 [email protected]
答案3
这是一个相当老的问题,但对我来说,问题-L 1234:WORKPC.example.org:3389
部分在于。路由器知道主机 workpc.example.org,但 PC 本身不知道。因此,流量从 SSH 端点再次通过路由器到达端口 3389,该端口被防火墙阻止。-L 1234:127.0.0.1:3389
有效。