环境情况

  • 远程服务器上配置了anaconda
  • 本地主机没有安装anaconda(其实安不安装都无所谓,有浏览器就行)

配置步骤如下

  1. 登录远程服务器

  2. 生成配置文件

    jupyter notebook --generate-config

  3. 生成密码

    输入ipython打开ipython生成密钥:

    In [1]: from notebook.auth import passwd
    In [2]: passwd()
    Enter password:
    Verify password:
    Out[2]: 'sha1:ce23d945972f:34769685a7ccd3d08c84a18c63968a41f1140274' #这段是密钥

    把生成的密钥'sha1:ce2…'复制下来后面用,password是远程登录时需要输入的密码,要记住。

  4. 修改配置文件

    使用vim打开配置文件

    vim ~/.jupyter/jupyter_notebook_config.py

    修改如下地方:

    c.NotebookApp.ip = '*'
    c.NotebookApp.password = u'sha:ce...刚才复制的那个密文'
    c.NotebookApp.open_browser = False
    c.NotebookApp.port = 8888 #随便指定一个端口,但是要记住
    c.NotebookApp.allow_remote_access = True
    c.NotebookApp.notebook_dir = u'目录' #这个是根目录,不想配置就不配置,默认是用户家目录
  5. 启动jupyter notebook

    正常启动:

    jupyter notebook

    但是我们可能通常想要在后台启动jupyter,然后关闭终端,在本地电脑上用浏览器访问:

    nohup jupyter notebook &

  6. 远程访问

    在本地打开浏览器访问http://address_of_remote:8888就可以访问jupyter的登录界面了,输入密码就可以正常登录了。

意外情况

有些服务器可能只开放一个对外的端口,但是我们通过终端访问服务器需要一个对外端口,开启jupyter服务又需要一个端口,这样就需要同时占用两个端口才行。举个栗子,服务器为了保证安全性只开放了一个对外的端口,22号端口,我们使用终端通过22号端口登录到服务器上打开jupyter,jupyter创建的端口是8888号,但是服务器没有对外开放8888号端口,所以即使打开了jupyter,外面也无法正常访问。如果把jupyter的端口号改为22号,由于我们登录终端的时候正在占用22号,所以jupyter就会提示端口已被占用,无法创建。网上有很多教程说可以通过修改防火墙设置来开放端口,修改防火墙设置一般都需要管理员权限,但是通常我们使用服务器的时候大多数情况下是不可能有管理员权限的,这时候我们可以使用端口映射来解决这个问题。

  1. 首先登录终端打开jupyter,这时根据配置信息jupyter占用的是8888端口。

  2. 然后我们在本地上使用命令行输入:

    ssh -N -f -L localhost:9999:localhost:8888 -p 端口号 username@远程地址

    例如ssh -N -f -L localhost:9999:localhost:8888 -p 22 yzr@202.48.29.23

    这里说明一下:locahost:9999是指本地地址,localhost:8888是指远程地址,其中8888是jupyter notebook中设置的端口号,-p 22是指登录服务器的端口号 后面是用户名和服务器ip。

  3. 打开浏览器,输入localhost:9999就可以看到jupyter notebook的登录界面了。

这里原理上就是将服务器上的8888端口映射到本机的9999端口。

配置本地访问远程Linux系统服务器的jupyter notebook的更多相关文章

  1. 本地主机访问远程linux系统服务器上的jupyter notebook

    1,机器情况:服务器 centos python环境已经配置好了,在虚拟环境下安装了anaconda 并且在里面安装了jupyter notebook 2,主机是 windows     ipytho ...

  2. PHPStorm.WebStrom等系列官方开发工具配置本地项目与运程服务器同步

    PHPStorm.WebStrom配置本地项目与运程服务器同步 说明:PHPStorm.WebStrom等官方的系统开发工具配置本地项目与运程服务器同步的方法都基本一致没有,几乎没有什么不同之处,我们 ...

  3. 如何用 putty 连接远程 Linux 系统

    如何用 putty 连接远程 Linux 系统 Putty 简介 Putty 是一个免费的.Windows x86 平台下的 Telnet.SSH 和 Rlogin 客户端,但是功能丝毫不逊色于商业的 ...

  4. Windows上管理远程Linux VPS/服务器文件工具 - winscp

    Linux上经常会经常需要编辑文件,特别是Linux VPS/服务器安装好系统之后配置环境会需要修改很多的配置文件等,对于常用Linux的基本上都能够熟练使用vi或者nano等SSH下面的文件编辑工具 ...

  5. Windows系统下远程Linux系统

    Windows系统下远程Linux系统 工具:Xmanager 启动界面: 配置保存路径(win7): C:\Users\Administrator\AppData\Roaming\NetSarang ...

  6. Linux—查看远程Linux系统运行时间

    [选择题]在Shell环境下,如何查看远程Linux系统运行了多少时间? A.scp user@被监控主机ip "uptime" B.ssh user@被监控主机ip " ...

  7. 【转载】使用rdp协议访问远程Linux桌面

    使用rdp协议访问远程Linux桌面 2017年03月31日 16:23:49 太阳之影 阅读数:2169   一般情况下,如果需要登陆远程Linux系统,我们会使用ssh/telnet来完成,如果需 ...

  8. Xshell访问本地或者远程Linux虚拟机

    背景 在本地PC机上安装了VMware workstation和Ubuntu系统,但是每次访问虚拟机都需要输入登陆密码,比较不方便.为此,通过Xshell来访问虚拟机,提高工作效率. 步骤 1.打开虚 ...

  9. linux系统服务器可能被攻击的几种攻击方式

    linux系统随着Linux企业应用的扩展,有大量的网络服务器使用Linux操作系统.Linux服务器的安全性能受到越来越多的关注,这里根据Linux服务器受到攻击的深度以级别形式列出,并提出不同的解 ...

随机推荐

  1. BZOJ4641 基因改造[KMP]

    这道题以前好像模拟的时候做过,当时不会做,于是用hash水过去了.. 正解是KMP,还是用当前字符与上一次相同字符位置的距离表示数组,于是数值相等时就代表相似.第一次出现用INF代替. 然后要匹配有多 ...

  2. php的工作原理

    php有一种专门解释php的引擎称之为zend引擎 对于源程序,php引擎全部读入,而后进行词法分析,如果遇到不认识的词,就报parse_error (词法错误后终止分析) 词法分析后进入语法分析:语 ...

  3. 【WC2016】论战捆竹竿

    已经快三周了啊--终于把挖的坑填了-- 首先显然是把除了自身的所有border拿出来,即做 \(\left\{ n - b_1, n - b_2, \dots, n - b_k, n \right\} ...

  4. JDK_API剖析之java.io包

    Java的核心库java.io提供了全面的IO接口.包括:文件读写.标准设备输出等.Java中IO是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入. 一.接口 1.Closea ...

  5. HUD 1166:敌兵布阵(线段树 or 树状数组)

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Problem Des ...

  6. R_Studio(学生成绩)对数据进行属性构造处理

    对“Gary.csv”中数据进行进行属性构造处理,增加“总成绩”属性 Gary.csv setwd('D:\\data') list.files() #数据读取 dat=read.csv(file=& ...

  7. [CSP-S模拟测试]:统计(树状数组+乱搞)

    题目传送门(内部题120) 输入格式 第一行,两个正整数$n,m$. 第二行,$n$个正整数$a_1,a_2,...,a_n$,保证$1\leqslant a_i\leqslant n$,可能存在相同 ...

  8. spring-boot 中实现标准 redis 分布式锁

    一,前言 redis 现在已经成为系统缓存的必备组件,针对缓存读取更新操作,通常我们希望当缓存过期之后能够只有一个请求去更新缓存,其它请求依然使用旧的数据.这就需要用到锁,因为应用服务多数以集群方式部 ...

  9. C++入门经典-例3.1-判断输入的数字是否为奇数

    1:代码如下: // 3.1.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using ...

  10. Servlet基础总结

    1.Servlet概念: Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间 ...