关于SSH执行Python代码的存储及权限相关技术问询
关于SSH执行Python代码的存储及权限相关技术问询
咱们先拆解你用的这条命令ssh user@remotehost < python /home/codes/script.py的运行逻辑:这条命令是把你本地/home/codes/script.py里的代码通过标准输入(stdin)流式传给远程机器上的Python解释器,远程机器并不会把这段代码保存成一个实际的文件(除非你的Python脚本本身有写文件的操作,但那是脚本自己的行为,和SSH执行这个动作无关)。哪怕你是用sudo用户登录远程执行,这个传输和执行的逻辑也是一样的,远程默认不会留存你的脚本文件。
再说说root用户能不能看到实际代码:
- 如果你的Python脚本正在远程运行,root作为系统最高权限用户,确实有办法读取到进程内存里的代码内容,比如通过
/proc文件系统查看进程的内存快照或者标准输入的文件描述符(比如cat /proc/<进程PID>/fd/0,不过如果stdin已经读完,可能就看不到完整内容了)。 - 但一旦Python进程执行完毕,所有相关的内存内容都会被系统回收,远程机器上不会留下任何代码痕迹,root也没法再找到这段代码了。
另外补充一点:如果你的需求是避免root看到代码,除了这种流式执行的方式,也可以考虑对代码进行混淆,但核心是只要代码在远程进程里运行,root理论上还是能在进程存活期间获取到内存里的内容。
备注:内容来源于stack exchange,提问作者Yuqi
相关产品推荐
相关产品推荐

