全部。我的大学网络不知为何不允许传入连接。(我可以通过 SSH 退出网络,但不能进入网络。)
我正在尝试从我的学校计算机(“学校”)到学校网络之外的 VPS“计算机”(“外面”)建立 SSH 隧道。
我希望能够做到
ssh -p 3000 name@outside
最终登录到name@school。
以下是我尝试设置远程端口转发的方法:
[name@school]$ ssh -R *:3000:localhost:22 outside
此命令似乎有效。(使用 -v 标志运行此命令可得到
debug1: Remote connections from *:3000 forwarded to local address localhost:22
debug1: remote forward success for: listen 3000, connect localhost:22
debug1: All remote forwarding requests processed
看起来很有希望。
然而,当我跟进
ssh -p 3000 name@outside
它不起作用:
ssh: connect to host outside port 3000: Connection refused
我可以在外部服务器上打开 netcat 并监听端口 3000,然后使用学校计算机的 netcat 连接到它——这很好用。如果我尝试从 outside:3000 到 school:2000 建立 SSH 隧道,然后尝试使用 netcat 连接到 outside:3000,我会得到
nc: connect to outside port 3000 (tcp) failed: Connection refused
如果我在学校网络上的两台计算机之间尝试上述过程,它也会失败,所以我很确定问题出在我身上,而不是计算机/网络。
非常感谢您的帮助!(编辑:抱歉,看起来这应该在 serverfault 上进行?)
答案1
大学的防火墙阻止了该连接。这通常是为了防止滥用并阻止恶意软件通过 BotNet 方法传播服务器。这也是大多数大学阻止 IRC 的原因,因为它通常用于将数据传回主机。
答案2
从你自己的评论来看,你可以这样做ssh -p 3000 locahost
,而且它有效,你的方法是有效的。在某个地方,你与外部主机的连接被阻止了。学校可能出于某种原因阻止了端口 3000 上的任何传出流量,或者“外部”主机上的防火墙/acl 阻止了连接。另一个可能性很小,那就是外部的 ISP 阻止了连接。
尝试从另一个外部主机连接到它,看看是否可行。如果可行,则说明您的学校正在阻止它(这确实很奇怪,但学校网络通常都是这样)。否则,请查看该外部主机上的防火墙规则,看看它是否阻止它。不幸的是,对于最后一种 ISP 阻止的情况,没有真正简单的方法可以判断是 ISP 阻止,还是机器本身阻止。