利用远程服务器实现内网穿透访问jupyter notebook

穿透内网,访问jupyter notebook...

联系方式:

e-mail: FesianXu@gmail.com

github: https://github.com/FesianXu

知乎专栏: 计算机视觉/计算机图形理论与应用

微信公众号


有两种方式,但是都需要一个有公网IP的云服务器, 第一种方式使用ssh隧道转发;第二种方式用frp进行内网穿透,并且需要有个域名,可以在腾讯云之类的注册申请一个。第一种方式更简单,第二种方式只要有浏览器即可访问jupyter notebook。

ssh隧道转发

  1. 本地安装Xshell,建立连接,登录服务器

  2. 在远程服务器上,启动jupyter notebook服务:

    1
    jupyter notebook --no-browser --port=8889
  3. 本地安装ssh,参考"Windows安装OpenSSH支持SSH",打开cmd,输入以下命令:

    1
    ssh -N -f -L localhost:8888:localhost:8889 -p 22 remote_user@remote_host

    其中: -N 告诉SSH没有命令要被远程执行; -f 告诉SSH在后台执行; -L 是指定port forwarding的配置,远端端口是8889,本地的端口号的8888。remote_user@remote_host 用实际的远程帐户和远程地址替换,@不变

  4. 打开浏览器,输入地址:http://localhost:8888/ ,输入token即可使用

frp技术

要求:一台云服务器,一个性能强大但不方便携带的电脑,frp软件 [1]

  • 首先下载frp软件,找到你的系统对应的版本

  • 一个安装在服务器上,另外一个安装在你的要穿透的电脑是 服务器上找到frps.ini 配置如下

    1
    2
    3
    4
    5
    6
    7
    [common]
    bind_port = 7000
    vhost_http_port = 8888
    # 下面的是配置可视化界面的,可以通过你的ip:7500访问
    dashboard_port = 7500
    dashboard_user = 用户名
    dashboard_pwd = 密码
  • 要穿透的笔记本的frpc.ini配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    [common]
    server_addr = 你的服务器ip地址
    server_port = 7000

    # 这个是设置ssh的,外网可以访问
    [ssh]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 22
    remote_port = 6001
    # 这个是对于穿透jupyter配置
    [jupyter]
    type = http
    local_port = 8888
    custom_domains = 你的域名

    启动服务器端./frps -c frps.ini 启动客户端./frpc -c frpc.ini

  • 设置快捷启动方式

    1
    2
    #!/bin/bash
    nohup /myapp/frp/frpc -c /myapp/frp/frpc.ini >/dev/null 2>&1 &
  • jupyter notebook 设置启动

    1
    2
    #!/bin/bash
    nohup jupyter notebook >/dev/null 2>&1 &
  • 最后成功实现访问

Reference

[1]. https://github.com/fatedier/frp

[2]. https://blog.csdn.net/martind/article/details/82716445

[3]. https://blog.csdn.net/chineseqsc/article/details/86241256