AI 研伴
← AI 科研案例集 / 远程计算与科研协作

远程计算与科研协作 · OpenScience 真实对话 · GPT-5.6-sol

第一次把 OpenScience 连接到自己的服务器

普通用户从项目专用 SSH 密钥开始,按当前界面完成 Add host、Test、New job、Logs 和 Artifacts,并获得可直接使用的轻量测试任务。

1 轮原生对话当前界面逐步操作连接信息全部脱敏

适合人群

科研工作者、教师和研究生,以及希望把通用科研任务整理为可复现工作流的用户

开始前准备

准备研究问题、已有材料和希望交付的成果格式;涉及文献时同时提供检索范围与纳排标准。

你将获得

  • 1 轮原生对话
  • 当前界面逐步操作
  • 连接信息全部脱敏
  • 5 项可查看的项目文件

方法与边界

案例用于展示工作流和交付形式,事实、文献与结论仍需研究者核验。

原生会话与文件

直接查看真实使用场景

保留原始用户提问和 Agent 完整回复;公开版本仅移除内部路径、连接信息、凭据、隐藏推理与计费数据。

真实对话|第一次把 OpenScience 连接到自己的服务器

AI 研伴(OpenScience) · gpt-5.6-sol

真实运行记录
用户

我有一台自己的 Linux 服务器,想让 OpenScience 帮我在上面运行分析,但我不熟悉 SSH。请参考当前项目里的 `connect_your_server_remote_compute.md`,把我当作第一次使用的普通用户,按当前界面一步步教我完成连接、测试、运行一个轻量 Python 任务并取回结果。

AI 研伴(OpenScience) · gpt-5.6-sol

下面按当前项目文档中的界面,带你完成一次最小、低风险的远程计算流程。这个示例只运行一个轻量 Python 脚本,生成一个 result.json,不会重新运行项目已有的统计功效模拟。

你需要先准备 5 项信息

请向服务器管理员确认:

  • Hostname:服务器域名或 IP
  • Port:通常是 22
  • User:你的 Linux 用户名
  • Identity file:私钥文件路径
  • Remote working directory:你有权限写入的远程目录

例如:

Hostname: <REMOTE_HOST>
Port: 22
User: <REMOTE_USER>
Identity file: <LOCAL_PRIVATE_KEY_PATH>
Remote working directory: <REMOTE_WORKDIR>/openscience_job

尖括号只是占位符。不要把私钥内容粘贴进 OpenScience,也不要把密码、令牌或私钥写进脚本。

第一步:打开远程主机设置

  1. 登录 OpenScience。
  2. 点击右上角齿轮图标,进入 Settings。
  3. 在左侧找到 Runtime。
  4. 点击 Runtime 下的 Compute。
  5. 找到 Remote hosts。
  6. 点击 Add host。

你会看到 New SSH host 表单。按以下方式填写:

字段填写内容
Name例如 my-remote-compute
Hostname服务器地址
User你的 Linux 用户名
Port管理员提供的 SSH 端口,通常为 22
Identity fileOpenScience 运行设备上可读的私钥路径
ProxyJump不需要跳板机就留空
Scheduler按服务器实际配置填写;普通单机按界面提示选择
Remote working directory你有权限写入的专用目录
Concurrent jobs先填 1
Host notes例如 个人轻量计算节点

特别检查:

  • 私钥路径必须是 运行 OpenScience 的设备上的路径。
  • Hostname、User、私钥和远程目录应对应同一台服务器和同一账号。
  • 远程目录不能是生产目录,且账号必须有写权限。
  • 不要在 Host notes 中写真实地址、用户名、密钥路径或指纹。

填写完成后点击 Add host。

如果平台弹出主机指纹确认,只有在你通过管理员或可信渠道核对过指纹后才确认。不要把指纹复制到聊天、截图或公开文档中。

第二步:测试连接

  1. 在 Remote hosts 区域找到刚创建的主机卡片。
  2. 点击卡片上的 Test。
  3. 等待测试完成。

至少确认以下结果:

  • 主机状态显示可用、connected 或类似状态;
  • 没有 Host、认证或目录权限错误;
  • 平台能识别远程运行时;
  • 远程工作目录可以创建临时任务文件。

“配置已保存”不等于连接成功,必须看到 Test 成功。

常见错误处理:

  • Host 或网络错误:检查服务器地址、端口、VPN、防火墙和服务器是否在线。
  • 认证错误:检查用户名、私钥路径、私钥类型和私钥权限。
  • 目录权限错误:换成管理员确认过的可写目录。
  • Python 或运行时错误:让管理员确认远程 Python 可用,并记录版本即可,不要复制完整环境变量。

不要通过关闭主机密钥检查来绕过问题,也不要无限重复点击 Test。

第三步:准备一个轻量 Python 任务

在本地准备一个文件,文件名为 analysis.py,内容如下:

import json
import platform
from datetime import datetime, timezone

values = [2, 4, 6, 8, 10]

result = {
    "status": "ok",
    "count": len(values),
    "sum": sum(values),
    "mean": sum(values) / len(values),
    "python_version": platform.python_version(),
    "completed_at_utc": datetime.now(timezone.utc).isoformat(),
}

with open("result.json", "w", encoding="utf-8") as handle:
    json.dump(result, handle, ensure_ascii=False, indent=2)

print("analysis completed")
print("output: result.json")

这个任务只使用 Python 标准库,不需要安装额外依赖。它会计算一组数字的数量、总和和平均值,并生成 result.json。

预期的主要结果应类似:

{
  "status": "ok",
  "count": 5,
  "sum": 30,
  "mean": 6.0
}

其中 python_version 和 completed_at_utc 会根据远程环境自动变化。

第四步:创建远程任务

配置并测试主机后:

  1. 回到要运行任务的具体项目或会话页面。
  2. 查看右侧工作区。
  3. 点击 Compute。
  4. 进入 Runtimes and jobs。
  5. 点击 New job。

在任务表单中填写:

项目示例
Target刚才 Test 成功的主机别名
Input files上传 analysis.py
Commandpython analysis.py
Working directory远程专用任务目录
CPU1
Memory使用平台允许的最小合理值
Timeout例如 5 分钟
Expected artifactsresult.json

命令应当只是:

python analysis.py

不要写成下面这样:

python analysis.py --password ...

密码、令牌、私钥和连接信息都不应该作为命令行参数传入。

如果页面有 Plan 按钮,先点击它,检查:

  • 目标主机确实是刚才测试成功的主机;
  • 输入文件只有 analysis.py;
  • 命令没有凭据;
  • 工作目录正确;
  • CPU、内存和超时时间有限;
  • 预期输出包含 result.json。

确认无误后,点击页面显示的提交按钮。

第五步:等待任务完成

提交后进入任务详情页:

  1. 记下平台生成的任务编号。
  2. 等待状态变化。
  3. 可以使用 Wait、Refresh 或任务列表刷新功能。
  4. 看到 running 时不要重复提交同一个任务。
  5. 最终状态应为 succeeded。

如果状态变为 failed:

  1. 打开 Logs。
  2. 查找错误类别,例如 Python 不存在、文件找不到或权限不足。
  3. 确认日志没有泄露私钥、密码、令牌或完整环境变量。
  4. 修正问题后再提交一次。

针对这个示例,常见问题是:

  • python: command not found:尝试把命令改为平台支持的 python3 analysis.py。
  • can't open file analysis.py:检查 analysis.py 是否确实上传,且任务工作目录正确。
  • Permission denied:更换远程工作目录。
  • 没有生成 result.json:确认 Expected artifacts 中填写了完全相同的文件名。

第六步:下载结果

任务状态为 succeeded 后:

  1. 打开 Artifacts,或打开任务详情中的输出文件区域。
  2. 下载 result.json。
  3. 如果有 Download all,下载后确认压缩包中只有预期文件。
  4. 在本地打开 result.json,检查:
    • "status" 是否为 "ok";
    • "count" 是否为 5;
    • "sum" 是否为 30;
    • "mean" 是否为 6.0;
    • 有 Python 版本和完成时间记录。

你也可以用本地 Python 做只读检查:

python3 -m json.tool result.json

如果本地没有 python3,直接用文本编辑器或浏览器打开 JSON 也可以。

完成标准

到这里,完整流程应当是:

Settings
  -> Runtime
  -> Compute
  -> Remote hosts
  -> Add host
  -> Test 成功
  -> 回到项目或会话
  -> Compute
  -> Runtimes and jobs
  -> New job
  -> 上传 analysis.py
  -> 运行 python analysis.py
  -> succeeded
  -> Artifacts
  -> 下载 result.json

这次练习只验证了连接、认证、远程目录、任务提交、Python 执行和结果下载。项目中已有的 power_results.csv、run_summary.json、validation_summary.json 和 power_results_guide.html 不需要为了验证连接而重新运行。

工具执行细节已脱敏;交付文件保留在右侧。
1 轮原生对话
当前界面逐步操作
连接信息全部脱敏

继续探索

相关科研案例

浏览全部案例 →

常见问题

使用这个案例前,你可能想了解

“第一次把 OpenScience 连接到自己的服务器”适合哪些用户?

科研工作者、教师和研究生,以及希望把通用科研任务整理为可复现工作流的用户

复制案例前需要准备什么?

准备研究问题、已有材料和希望交付的成果格式;涉及文献时同时提供检索范围与纳排标准。

可以把案例结果直接用于论文或决策吗?

不建议直接照搬。案例用于展示工作流和交付形式,事实、文献与结论仍需研究者核验。复制案例后,应使用自己的数据重新运行并逐项核验。

这个案例会占用很多计算资源吗?

不会。公开案例按网页版轻量分析设计;大型原始数据、深度学习、单细胞、空间组学或医学影像任务,建议通过远程计算功能连接自己的服务器。