无路由器权限,如何 SSH 穿透路由连接内网中的 Linux 机器?

2014-06-27 16:14:39 +08:00
 Tonni
前提:我没有操作路由器的权限,不可能进行端口转发。

我记得之前好像用什么动态地址解析能解决这个问题,不太清楚了,不知道有没有朋友能说下解决办法。
10878 次点击
所在节点    Linux
24 条回复
zieglar
2014-06-27 16:20:13 +08:00
dafang
2014-06-27 16:21:59 +08:00
你可以用 ngrok 这个软件。理论上,只要你有一台外网的服务器,是可以通过这台外网的服务器做tunnel来做数据转发的。

你内网的机器连到外网服务器打开隧道 - 你外网的用户连到服务器握手隧道。

然后就可以SSH双向数据传输了。

ngrok可以方便的解决这个问题。单独的ssh也可以做到。
66450146
2014-06-27 16:24:24 +08:00
你有一台外网的服务器可以 ssh 的话,就可以用 ssh -R 来转发
mantianyu
2014-06-27 16:26:17 +08:00
动态地址解析应该解决不了这个问题吧
Tonni
2014-06-27 16:29:29 +08:00
@66450146 有个美国的VPS,但是在家的长宽访问国外节点速度太慢了。
Tonni
2014-06-27 16:33:00 +08:00
@zieglar 谢谢推荐,我试用了下,遇到一个奇怪的问题,我是用命令`ssh tonni@5de5f480.ngrok.com`登陆,输入密码提示我密码错误,但是使用`ssh tonni@192.168.1.103`登陆输入密码既可以正常登陆。
zieglar
2014-06-27 16:49:07 +08:00
看看页面上,有介绍可以让你 debug
9hills
2014-06-27 16:55:52 +08:00
@Tonni 选个国内的VPS做中转呗,Azure貌似有免费的
sandtears
2014-06-27 17:12:48 +08:00
最简单的解决方案,买个花生壳新出的花生棒。

麻烦点的话可以买个 VPS,然后用 ssh -R 2222:localhost:22 remote_ip 把本机的 22 端口映射到 VPS 上的 2222 端口。

或者用 he.net 家的 IPv6 Tunnel 服务
sandtears
2014-06-27 17:19:38 +08:00
另外国内 VPS 貌似不贵,我有个专门用来做端口转发的腾讯云,20+RMB/mo ,1Mbps 转发个 ssh 还是够了。
Tonni
2014-06-27 17:42:02 +08:00
@dafang 忘记@你了,你遇到过6楼中提到的问题么?
Tonni
2014-06-27 18:21:52 +08:00
@sandtears 我发现这个不能长久,执行命令后自动登录服务器可以连接,我关掉ssh客户端再登陆就不行了
sandtears
2014-06-27 19:31:40 +08:00
@Tonni 加参数 ssh -qTfNg -R ... 这样
sandtears
2014-06-27 19:33:42 +08:00
@Tonni 额 还是用 ssh -Cfg -R 吧,之前那个是我 ssh tunnel 的时候习惯用的。

f 参数的意思就是把这个链接保持在后台
dafang
2014-06-27 20:04:16 +08:00
@Tonni 你没指定端口啊,你要看一下,一般你ngrok start ssh啥之后,会给你分配一个随机端口的。ngrok.com肯定不会把22端口给你的啊。。。
Ansonyi
2014-06-27 20:10:58 +08:00
oott123
2014-06-27 22:20:51 +08:00
试试 n2n ?
udp 打洞,可以做到直连…
Tonni
2014-06-27 23:30:25 +08:00
@zieglar
@dafang
@66450146
@mantianyu
@oott123
@Ansonyi
@sandtears
@9hills

感谢大家的帮助,我找到解决办法了,

你需要注册一个ngrok的账号,他会给你分配一个token,
执行命令./ngrok -authtoken YOU TOKEN -proto=tcp 22既可以分配给你一个临时的端口,这样你就可以远程登陆啦。配合tmux味道更佳!
谢谢你们的帮助。
zhoubug
2014-06-28 02:35:36 +08:00
google play 或者 百度应用搜下n2n
geeti
2014-06-28 03:24:46 +08:00
如果能从内网的机器ssh到外部机器,那就可以用ssh的远程转发。
从内网到外网: ssh -R 19999:localhost:22 [外网client]
然后在外网就可以直接 ssh -p 19999 localhost

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/119846

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX