You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux机器上安全存储Telegram API密钥并用于ORCA脚本的方案咨询

问题描述

我编写了一个部署在大学工作组共享PC上的批量运行量子化学计算软件ORCA的脚本,由于计算耗时较长,希望添加可选功能,让用户能通过Telegram接收计算进度和结果更新。我的实现思路如下:

  1. 用户用gpg加密自己的Telegram API令牌,设置个人密码短语:
echo "TELEGRAM_TOKEN" | gpg --symmetric --armor --output tgt_USER_NAME.asc
  1. 所有用户的加密文件存储在公共目录:
~/.asc/usrid1.asc
~/.asc/usrid2.asc
...
  1. 用户调用脚本时通过-f参数指定自己的用户ID,开启Telegram通知:
./run_orca -f usrid
  1. 脚本会提示用户输入密码短语,解密令牌后调用Python脚本发送通知,核心bash脚本代码:
#!/bin/bash

# defaults
folder="inpsfolder"
extension="inp"
follow="" 

while getopts "i:x:f:" opt; do
  case $opt in
    (i) folder="$OPTARG";;;
    (x) extension="$OPTARG";;;
    (f) follow="$OPTARG" ;; # 用户输入自己的ID(比如jdoe)
  esac
done

token_path="~/.asc/${follow}"
token="$(gpg --decrypt ${token_path})"

if [ $follow!="" ]
then
    python /path/to/script.py -t "$token" # 运行Telegram通知代码
fi

请问这个方案是否安全?是否只有知道自己密码短语的用户才能查看自己的Telegram API令牌?方案整体是否可行?


方案安全性与可行性分析

安全性分析

你的核心安全逻辑是成立的:用户用专属密码短语加密Telegram令牌,只有掌握密码的人才能解密自己的.asc文件,其他用户即使拿到加密文件也无法获取明文令牌。但需要注意几个细节来规避风险:

  • 加密文件目录权限:必须严格设置~/.asc目录的权限,确保所有用户仅能读取加密文件,无法修改或删除。建议执行以下命令:

    chmod 755 ~/.asc
    chmod 644 ~/.asc/*.asc
    

    这样可以防止恶意用户替换他人的加密文件,避免用户解密出错误的令牌。

  • 令牌传递的安全隐患:当前脚本通过命令行参数-t "$token"把明文令牌传给Python脚本,这会导致令牌出现在进程列表中(其他用户用ps aux就能看到)。解决方法是改用标准输入传递令牌:

    if [ -n "$follow" ]; then
        echo "$token" | python /path/to/script.py
    fi
    

    同时修改Python脚本从标准输入读取令牌,避免明文暴露在进程命令行中。

  • 内存中的令牌风险:解密后的令牌会暂存在bash变量token中,脚本运行期间令牌存在于内存中。如果共享PC的管理员不可信,可能通过读取进程内存获取令牌,但大学工作组场景下管理员一般可信,该风险可接受。

可行性分析

方案整体是可行的,核心流程能够实现Telegram通知功能,但需要补充以下细节完善逻辑:

  • 错误处理:添加必要的错误判断,避免脚本在异常情况下继续执行:

    # 检查加密文件是否存在
    token_path=~/.asc/${follow}
    if [ ! -f "$token_path" ]; then
        echo "用户ID不存在,请检查输入"
        exit 1
    fi
    
    # 解密并检查结果
    token=$(gpg --decrypt "$token_path" 2>/dev/null)
    if [ $? -ne 0 ]; then
        echo "解密失败,请检查密码是否正确"
        exit 1
    fi
    
  • 用户ID唯一性:确保usrid使用大学统一的用户名(或其他唯一标识),避免不同用户ID冲突。

  • 进度监控逻辑:当前脚本仅实现了令牌解密和调用Python脚本的逻辑,还需要补充ORCA计算进度的监控逻辑——比如定时扫描ORCA的日志文件,当计算进入特定阶段(如SCF收敛、任务完成)时触发Python脚本发送通知。

内容的提问来源于stack exchange,提问作者J.Doe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 16:18:26