• 使用云服务器作为跳板机器远程转发内网机器端口的jupyter服务


    由于实验室服务器部署在内网。我运行在实验室服务器的jupyter服务无法直接通过ip+端口号的方法访问。于是想到了借助一个具有公网地址的华为云服务器(新用户一年100块钱)进行远程转发。我的目标是:通过这个公网地址+端口号 随时随地使用我在实验室机器上的jupyter。

    前提:

    1. 内网服务器是可以访问外网的。
    2. 云服务器已经配置好了安全组设置。允许外部的访问。
    3. 配置从内网服务器访问外网的免密认证。参考:一行命令实现服务器的免密认证
    4. 已经使用screen使得jupyter notebook服务在服务器后台稳定运行。指定了端口号,本例为8888。并且配置好jupyter允许外部ip的访问。

    实验性方法:

    在内网服务器上,运行如下代码:

    ssh -fCNR port:localhost:8888 testuser@113.4.67.278
    
    • 1

    解释如下:

    port : 自定义一个云服务器的端口,比如9999
    8888: 实际想访问的本地端口
    root和ip地址根据实际情况改写
    -f : 表示SSH连接在后台运行
    -C : 表示压缩数据传输
    -N : 用于端口转发,表示建立的SSH只用于端口转发,不能执行远程命令
    -R : 指定远程端口转发
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    但是,以上方法存在一个问题是,ssh会超时断联。我参考了下面这篇文章来解决。
    ssh 设置超时时间

    方法升级:

    (真男人要持久)

    ssh -fCNR port:localhost:321 root@113.4.67.278  -o ServerAliveInterval=60
    
    
    • 1
    • 2

    注意事项

    要区分远程转发-R 和本地转发 -L

    本地转发(local forwarding)指的是,SSH 服务器作为中介的跳板机,建立本地计算机与特定目标网站之间的加密连接。本地转发是在本地计算机的 SSH 客户端建立的转发规则。建立本地计算机到远程计算机的 SSH 隧道以后,本地转发是通过本地计算机访问远程计算机

    远程转发指的是在远程 SSH 服务器建立的转发规则。远程转发是通过远程计算机访问本地计算机。

    本文使用的是远程转发的方法。

    如果嫌这个设置繁琐的话,可以使用vs code进行本地转发。只要你的jupyter服务是挂在screen上持久运行的,就没有问题。要注意防止vs code的ssh超时断连。这个是可以通过下图的文件加上ClientAliveInterval进行设置的。
    在这里插入图片描述

    每一分钟,sshd都和ssh client打个招呼,检测它是否存在,不存时即断开连接。

    推荐阅读:

    SSH 端口转发 https://wangdoc.com/ssh/port-forwarding.html
    内网服务器外网连接SSH远程端口转发实战详解 https://blog.csdn.net/a15608445683/article/details/122852683

  • 相关阅读:
    VScode+esp-idf:例程(esp32-web-camera)保存视频到sd卡
    webserver(二)
    阿里云轻量应用服务器Ubuntu20.04上手体验与基本配置(图形界面,ssh,代理等)
    Spring MVC介绍
    MySQL的存储引擎
    【文生图系列】基础篇-马尔可夫链
    Elelemt-UI el-table 接收后端返回换行符 /n 不生效
    Linux权限及Xshell运行原理
    promise详解
    MySQL 常用功能
  • 原文地址:https://blog.csdn.net/weixin_37726222/article/details/126805408