Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Tonni
V2EX  ›  Linux

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

  •  
  •   Tonni · Jun 27, 2014 · 11686 views
    This topic created in 4346 days ago, the information mentioned may be changed or developed.
    前提:我没有操作路由器的权限,不可能进行端口转发。

    我记得之前好像用什么动态地址解析能解决这个问题,不太清楚了,不知道有没有朋友能说下解决办法。
    Supplement 1  ·  Dec 12, 2014
    看到有人收藏这个主题,更新下,已经不用ngrok了,改用n2n了,还是n2n大法好啊。
    Supplement 2  ·  Aug 29, 2018
    现在改用 frp 了 https://github.com/fatedier/frp
    24 replies    2015-09-21 10:36:21 +08:00
    zieglar
        1
    zieglar  
       Jun 27, 2014   ❤️ 2
    dafang
        2
    dafang  
       Jun 27, 2014   ❤️ 1
    你可以用 ngrok 这个软件。理论上,只要你有一台外网的服务器,是可以通过这台外网的服务器做tunnel来做数据转发的。

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

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

    ngrok可以方便的解决这个问题。单独的ssh也可以做到。
    66450146
        3
    66450146  
       Jun 27, 2014   ❤️ 1
    你有一台外网的服务器可以 ssh 的话,就可以用 ssh -R 来转发
    mantianyu
        4
    mantianyu  
       Jun 27, 2014   ❤️ 1
    动态地址解析应该解决不了这个问题吧
    Tonni
        5
    Tonni  
    OP
       Jun 27, 2014
    @66450146 有个美国的VPS,但是在家的长宽访问国外节点速度太慢了。
    Tonni
        6
    Tonni  
    OP
       Jun 27, 2014
    @zieglar 谢谢推荐,我试用了下,遇到一个奇怪的问题,我是用命令`ssh [email protected]`登陆,输入密码提示我密码错误,但是使用`ssh [email protected]`登陆输入密码既可以正常登陆。
    zieglar
        7
    zieglar  
       Jun 27, 2014
    看看页面上,有介绍可以让你 debug
    9hills
        8
    9hills  
       Jun 27, 2014   ❤️ 1
    @Tonni 选个国内的VPS做中转呗,Azure貌似有免费的
    sandtears
        9
    sandtears  
       Jun 27, 2014   ❤️ 1
    最简单的解决方案,买个花生壳新出的花生棒。

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

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

    f 参数的意思就是把这个链接保持在后台
    dafang
        15
    dafang  
       Jun 27, 2014
    @Tonni 你没指定端口啊,你要看一下,一般你ngrok start ssh啥之后,会给你分配一个随机端口的。ngrok.com肯定不会把22端口给你的啊。。。
    Ansonyi
        16
    Ansonyi  
       Jun 27, 2014   ❤️ 1
    oott123
        17
    oott123  
       Jun 27, 2014 via Android   ❤️ 1
    试试 n2n ?
    udp 打洞,可以做到直连…
    Tonni
        18
    Tonni  
    OP
       Jun 27, 2014
    @zieglar
    @dafang
    @66450146
    @mantianyu
    @oott123
    @Ansonyi
    @sandtears
    @9hills

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

    你需要注册一个ngrok的账号,他会给你分配一个token,
    执行命令./ngrok -authtoken YOU TOKEN -proto=tcp 22既可以分配给你一个临时的端口,这样你就可以远程登陆啦。配合tmux味道更佳!
    谢谢你们的帮助。
    zhoubug
        19
    zhoubug  
       Jun 28, 2014 via Android   ❤️ 1
    google play 或者 百度应用搜下n2n
    geeti
        20
    geeti  
       Jun 28, 2014   ❤️ 1
    如果能从内网的机器ssh到外部机器,那就可以用ssh的远程转发。
    从内网到外网: ssh -R 19999:localhost:22 [外网client]
    然后在外网就可以直接 ssh -p 19999 localhost
    dafang
        21
    dafang  
       Jun 28, 2014
    @Tonni 这些都可以放到配置文件里的。然后每次用的时候 ngrok start ssh

    付费版本还可以自定义域名。如果担心数据被窃听,这个是开源的软件,还可以自己部署。
    lovejoy
        22
    lovejoy  
       Jun 28, 2014
    logmein-hamachi 值得你拥有
    love4taylor
        23
    love4taylor  
    PRO
       Jul 1, 2014
    为何不能upnp呢。。
    chunchu
        24
    chunchu  
       Sep 21, 2015
    我现在也已经转到 N2N 了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3636 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 88ms · UTC 10:29 · PVG 18:29 · LAX 03:29 · JFK 06:29
    ♥ Do have faith in what you're doing.