美文网首页
如何从外网调用内网的jupyter-notebook

如何从外网调用内网的jupyter-notebook

作者: BioGou | 来源:发表于2019-06-11 12:07 被阅读0次

    首先你需要一个映射端口,我是向单位IT申请了一个端口。花生壳这样的穿透神器没有试过,不知道可以不可以。

    这个其实很简单,只要知道两个信息就可以实现:
      1. 你的外网ip
      1. 你的内网向外网映射的端口

    !! 需要注意的是,这个端口一般是和你的IP绑定的,而公网的IP一般是自动分配的,所以最好把IP手动锁定,否则下次IP变了端口就没办法用了 !!

    第一步

    登陆你的服务器,这里的服务器也就是指你内网的那台电脑:

    ~$ ssh remote_user@remote_host -p *****(port)
    
    例如:
        ssh Evan@192.168.98.84 -p 1234
    这里的Evan就是你服务器的名字,注意192.168.98.84是你的外网IP,这个可以直接在百度中输入IP看到。-p是指定端口,1234就是你映射到外网的端口。
    

    第二步 运行远端服务器jupyter-notebook

    现在你已经登陆到内网服务器终端了,那么接下来就需要启动内网的jupyter-notebook了:

    ~$ jupyter notebook --no-browser --port=8889 --ip=127.0.0.1
    
    --no-browser指定jupyter-notebook不启动浏览器,否则它就在你远端那台电脑启动。
    --port=8889指定一个jupyter-notebook端口,默认是8888,也可以不改。
    --ip=127.0.0.1是指定本地IP,就是localhost,下一步会用,不指定不知道有没有关系,没试过。
    

    第三步 在本地转发端口

    这也是调用的核心步骤,把远端jupyter-notebook刚刚指定的8889端口映射到本地的某个端口,这样你就可以在本地浏览器通过该端口打开jupyter-notebook了:

    ~$ ssh -N -f -L localhost:8888:localhost:8889 -p *****(port) remote_user@remote_host
    
    这一步就是把两个端口绑定到一起了,前一个localhost:8888是你本地的8888端口,后一个localhost:8889是你刚刚打开的内网jupyter端口,然后剩下的参数就是和第一步一样的了
    例如:
        ssh -N -f -L localhost:8888:localhost:8889 -p 1234 Evan@192.168.98.84
    
    ssh参数:
    -f: 登录成功后即转为后台任务执行
    -N: 不执行远程命令(专门做端口转发)
    -L: 是一个建立在传输层的端口到端口的转发模式
    

    第四步 本地浏览器运行

    在本地浏览器网址栏输入http://127.0.0.1:8888,然后你就可以看到熟悉的jupyter-notebook界面了
    

    当然了,外网到内网搞定了,内网到内网就更容易了,如果你在单位有一台服务器(假设它是无界面的,或者是超算集群),但是你想在单位用自己的电脑调用其中的jupyter,那就把ssh中的IP换成内网IP,把-p参数去掉,就可以实现,如此简单。欢迎留言交流!

    相关文章

      网友评论

          本文标题:如何从外网调用内网的jupyter-notebook

          本文链接:https://www.haomeiwen.com/subject/pkvffctx.html