安全访问:FutureTerminal之Jupyter配置及Linux终端、Python与R环境访问

一、写在前面

(1)为什么选择这种组合

  • FutureTerminal:云服务器已进入黑暗森林时代,教你一招通过FutureTerminal安全连接。FutureTerminal非常适合通过 SSH 访问远程 Linux 服务器,并利用 SSH 隧道把远程 Jupyter 安全地转发到本地浏览器。

  • Conda:把 Python、R、Jupyter 及其依赖隔离在独立环境中,减少不同项目之间的版本冲突。

  • JupyterLab:在同一个交互式工作区中运行终端命令、Python单元和R单元,便于数据分析与结果留痕。

  • Python + R + Linux:Python适合通用编程与可视化,R适合统计分析与 ggplot2 绘图,Linux命令则便于文件管理、环境检查和批处理。

    生信Linux交流群欢迎大家加入

(2)前期准备

Linux和Conda是我们本节环境搭建的基础,这两部分我们在前期推送中也有相关内容介绍。如果还没有接触过的同学可以跟随我们十小时学会Linux生信软件管家------conda的安装、使用、卸载利用conda打包/复刻生信环境教程内容提前学习一下。

jupyter notebook作为Python的集成环境,可以逐行运行Python代码并返回结果,并且支持markerdown语法编译,可以说是一个学习Python的笔记本。jupyter notebook使用可以参考码Python神器:jupyter notebook

Python语法简洁、库资源丰富,计算高效,是数据科学、自动化开发等领域的首选,兼顾新手入门与资深者高效需求。因此,同学们在学习这个教程前,需要有一定得Python知识,可以参考生信Python速查手册进行快速学习。

(3)使用前提

  • 已获得服务器的合法访问权限;

  • FutureTerminal 已能通过 SSH 登录服务器;

  • 服务器可以访问Conda官方源或 conda-forge。

  • 如果你没有服务器,随时滴滴**Biomamba_zhushou咨询获取试用:https://biomamba.xiyoucloud.net/\*\*

二、配置过程

1. 在 FutureTerminal 中创建 Conda 环境

以下命令应在 FutureTerminal 的远程 SSH 终端中执行。若服务器已经安装 Conda,可跳过 Miniconda 安装部分。

bash 复制代码
# ===== FutureTerminal 远程终端中执行 =====
# 下面是 Shell 命令示例;请复制到 FutureTerminal 的终端,而不是 Python 单元中执行。
# 安装 Miniconda(安装目录按实际权限修改,例如我这里设置为家目录)
cd ~
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash 复制代码
# 执行安装步骤
bash Miniconda3-latest-Linux-x86_64.sh
# 当前终端加载 Conda
source /home/biomamba_lucky/miniconda3/bin/activate base
# 如需长期生效,可将下面一行加入 ~/.bashrc(确认路径无误后再执行)
echo 'source /home/biomamba_lucky/miniconda3/bin/activate base' >> ~/.bashrc
cs 复制代码
# 接受 Anaconda 默认通道服务条款(新版本 Conda 可能需要)
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/main
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/r
# 创建 Python 3.10 环境,这里python版本可以根据自己实际软件需求调整
conda create -n test_env python=3.10 -y
conda activate test_env
# 安装 JupyterLab 与 Jupyter Server
conda install jupyter -y -vv
conda install -c conda-forge jupyterlab jupyter_server -y

安全提示:Jupyter 登录方式:

推荐使用 SSH 隧道 + Jupyter 内置 token/密码,不要把 Jupyter 端口直接暴露到公网。jupyter notebook password会交互式要求输入密码

nginx 复制代码
# 生成 Jupyter 配置文件
cd ~
jupyter notebook --generate-config
# 设置 Jupyter 登录密码(交互式执行),后续可以用这里设置的密码登录jupyter
# !!! 注意:linux终端中输入密码不显示,但是实际伴随你输入完成密码也会设置完成
jupyter notebook password
bash 复制代码
# 写入远程访问端口配置
cd ~
cat >> ~/.jupyter/jupyter_notebook_config.py <<'EOF'
c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8888
EOF

2. 安装 R 内核与 R 绘图库

这里将 r-irkernel 安装到 test_env 环境中。为了让 R 内核能稳定出现在 Jupyter 中,建议同时安装 R、IRkernel 和 ggplot2。

css 复制代码
# 在 FutureTerminal 终端执行
conda activate test_env
conda install -c conda-forge r-base r-irkernel r-ggplot2 -y
# 进入R,依次完成以下输入:
R
# 关联R和jupyter lab
IRkernel::installspec()
q()
# 退出R并选择n,不保存工作空间

3、安装python库

nginx 复制代码
# 安装python库
conda install -c conda-forge matplotlib -y

4. 在 FutureTerminal 中配置SSH隧道并启动jupyter lab

4.1 建立 SSH 隧道

(1)导出配置

(2)导入配置

(3)连接远程终端

(4)建立隧道 - 点击编辑

(5)建立隧道 - 新建隧道

(6)建立隧道 - 应用jupyter

(7)建立隧道 - 点击右侧浏览器访问

打开终端后进入隧道位置查看目前已经建立的隧道,显示jupyter,点击右侧浏览器访问

(8)建立隧道 - 打开页面

(9)建立隧道 - 输入密码并点击登入

4.2 启动jupyter lab

启动Jupyter服务。启动日志通常会显示带 token 的访问地址;通过 SSH 隧道访问时,浏览器地址一般使用本机的 localhost 端口。

nginx 复制代码
# 终端运行
jupyter lab

启动成功标志

5. Jupyter中运行Linux命令

Jupyter 的代码单元可以用 ! 执行单条 Shell 命令,也可以用 %%bash 执行多行 Shell 脚本。下面的示例只做环境检查,不修改系统文件。

bash 复制代码
# 单条 Linux 命令
!whoami
!pwd
!uname -a

biomamba_lucky

/home/biomamba_lucky

Linux shpc-52909-instance-NAA0QSBY 5.15.0-186-generic #196-Ubuntu SMP Sat Jun 20 16:09:34 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux

bash 复制代码
# 查看 Jupyter 已识别的内核
! jupyter kernelspec list
# 查看conda安装地址
! which conda 
# 查看目前已经建立的conda环境
! conda env list

Available kernels:

ir /home/biomamba_lucky/miniconda3/envs/test_env/share/jupyter/kernels/ir

python3 /home/biomamba_lucky/miniconda3/envs/test_env/share/jupyter/kernels/python3

test_env /home/biomamba_lucky/.local/share/jupyter/kernels/test_env /home/biomamba_lucky/miniconda3/condabin/conda

#conda environments:

#* -> active

#+ -> frozen

base /home/biomamba_lucky/miniconda3

bash 复制代码
test_env             *   /home/biomamba_lucky/miniconda3/envs/test_env
bash 复制代码
# 查看 `~/.jupyter/jupyter_notebook_config.py`
!cat ~/.jupyter/jupyter_notebook_config.py | tail -n 3

c.NotebookApp.ip = '*'

c.NotebookApp.open_browser = False

c.NotebookApp.port = 8888

6. Jupyter中运行Python:绘制散点图

该示例使用 matplotlibnumpy 模拟在python中可视化场景。

6.1 指定kernel

python 复制代码
# 通过python检查文件是否存在以及行内容
from pathlib import Path
config_path = Path.home() / '.jupyter' / 'jupyter_notebook_config.py'
if config_path.exists():
    content = config_path.read_text(encoding='utf-8')
    lines = content.splitlines()
    # 取末尾三行
    print('\n'.join(lines[-3:]))
else:
    print(f'配置文件不存在:{config_path}')
    print('请先在终端执行:jupyter notebook --generate-config')

c.NotebookApp.ip = '*'

c.NotebookApp.open_browser = False

c.NotebookApp.port = 8888

6.2 绘制图形

apache 复制代码
# 导入库
import numpy as np
import matplotlib.pyplot as plt
# 生成模拟数据
rng = np.random.default_rng(42)
x = np.linspace(0, 10, 80)
y = 1.8 * x + rng.normal(0, 2.0, size=x.size)
# 绘制散点图
fig, ax = plt.subplots(figsize=(7, 4.5), dpi=120)
ax.scatter(x, y, s=42, alpha=0.78, color='
ax.set_title('Python scatter plot')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.grid(True, alpha=0.22)
fig.tight_layout()
plt.show()

7. Jupyter中运行R:使用ggplot2绘制散点图

7.1 指定kernel

7.2 绘制图形

perl 复制代码
library(ggplot2)
set.seed(42)
r_data <- data.frame(
  x = seq(0, 10, length.out = 80),
  y = 1.8 * seq(0, 10, length.out = 80) + rnorm(80, mean = 0, sd = 2)
)
ggplot(r_data, aes(x = x, y = y)) +
  geom_point(size = 2.4, alpha = 0.78, colour = '#D97706') +
  labs(
    title = 'R ggplot2 scatter plot',
    x = 'X',
    y = 'Y'
  ) +
  theme_minimal(base_size = 12)

Warning message:

"package 'ggplot2' was built under R version 4.4.3"

8. 故障排查清单

  1. conda: command not found:重新执行 source /home/biomamba_lucky/miniconda3/bin/activate base,并确认安装路径。

  2. 无法激活环境:conda activate test_env检查环境名称无误。

  3. Jupyter 看不到 R 内核:确认r-base、r-irkernel 已在目标环境安装,并重新运行 IRkernel::installspec();随后刷新或重启 JupyterLab。

  4. 浏览器无法连接:检查远程 Jupyter 是否仍在运行、端口是否一致,以及 SSH 隧道左侧端口和浏览器端口是否一致。

  5. 端口被占用:将本地隧道端口改为空闲端口。

9. 完成检查

  • FutureTerminal 可以 SSH 登录服务器;

  • test_env已创建并使用 Python 3.10;

  • jupyter kernelspec list中出现 Python 和 R 内核;

  • JupyterLab 通过 SSH 隧道访问,而不是直接暴露公网;

  • Linux命令、Python 散点图和 R ggplot2 散点图均成功运行。

相关推荐
M78佐菲1 小时前
ARM学习笔记(三)
linux·arm开发·笔记·嵌入式硬件·学习
邪修king1 小时前
Re:Linux 系统篇(三十一):库的制作与原理Chapter2:静态链接与程序加载 —— 从磁盘 ELF 到运行中进程的完整旅程
android·linux·运维·开发语言
云计算练习生1 小时前
什么是内核?操作系统内核到底管哪些事
linux·windows·操作系统·内核·shell
可涵不会debug1 小时前
公司外怎么连接管家婆?从 SQL Server 安装到 cpolar 固定 TCP 远程登录
linux·运维·ubuntu
wuyk5551 小时前
《WiFi 嵌入式物联网开发全套实战》| 第 12 章 Linux 系统 WiFi 常用命令全集:iw/iwlist/ip/wpa_cli 实战
linux·网络·stm32·物联网·tcp/ip
wuminyu1 小时前
纯轻量级锁体系下C2编译器锁粗化和消除机制剖析
java·linux·c语言·jvm·c++
运维全栈笔记1 小时前
Nginx 模块化多业务站点通用配置模板
linux·运维·nginx
辛迪聊物业数字化2 小时前
【拆解智慧物业管理系统架构:从SaaS落地到IoT全链路实现】
大数据·linux·组合模式
j7~2 小时前
【C++微服务项目开发脚手架】(准备篇)从 0 到跑通:Docker 容器开发环境 + 宿主机用户 + Trae 远程连接 全链路踩坑实战
linux·c++·学习·xshell·docker容器·trae