如何在Slurm中从登录节点转发ssh-agent套接字至计算节点?
如何通过Slurm转发ssh-agent套接字到计算节点
当然可以实现,这种方式能让你无需在计算节点存放私钥,完全契合你的安全需求。以下是具体操作步骤:
操作步骤
首先确认登录节点的ssh-agent套接字路径
登录节点上已通过ssh -A完成代理转发,先查看当前的代理套接字环境变量:echo $SSH_AUTH_SOCK该输出会指向一个类似
/tmp/ssh-XXXXXX/agent.1234的路径。通过Slurm提交作业时传递环境变量
- 若提交交互式作业,使用
srun时加上--export参数传递SSH_AUTH_SOCK:srun --export=SSH_AUTH_SOCK --pty bash - 若用
sbatch提交脚本,可在脚本头部添加SBATCH参数:
或者在提交脚本的命令行中指定该参数。#SBATCH --export=SSH_AUTH_SOCK
- 若提交交互式作业,使用
验证转发是否成功
进入计算节点后,执行以下命令查看代理中的私钥列表:ssh-add -l若能正常列出你的私钥信息,说明转发已生效。
注意事项
- 确保计算节点与登录节点共享同一文件系统(如NFS),因为
SSH_AUTH_SOCK指向的是登录节点上的套接字文件,计算节点需要能访问到该路径。 - 不要手动修改计算节点上的
SSH_AUTH_SOCK变量,保持Slurm传递的原值即可。 - 此方式下,私钥始终保存在你的本地机器,仅代理连接被转发,能有效避免私钥在集群节点上暴露的风险。
内容的提问来源于stack exchange,提问作者Yuxuan Lu
相关产品推荐
相关产品推荐

