singularity / ubuntu : 如何使用主机正版代理

singularity / ubuntu : how to use the host authentical agent

从 ubuntu 18.04(或更新版本)创建的奇点图像有一个 运行 脚本,除其他外,git 使用 ssh 克隆一些存储库。

理想情况下,我希望这样:执行映像时,主机的(已激活的)ssh 密钥用于(git ssh 克隆)身份验证。

所以事情可以 运行 像:

ssh-add ~/.ssh/my_key # and possibly typing password
./myimage.sif

这可能吗?

简答:是

  • SINGULARITY_BIND=$SSH_AUTH_SOCK ./myimage.sif
  • singularity run -B $SSH_AUTH_SOCK myimage.sif

长答案:是的,只要将正确的目录和环境变量传递给图像即可。

你需要:

  1. git/ssh 安装在奇点图像中(可能在也可能不在默认 docker 图像中)
  2. 您的 $HOME 目录安装在其中。这是默认设置,但可能需要手动执行 (-H /home/my_user),具体取决于配置
  3. ssh-agent 环境变量 SSH_AUTH_SOCK 已导出。默认情况下,您的主机环境会传递到容器中,但这可以通过 -e | --cleanenv 禁用
  4. $SSH_AUTH_SOCK中设置的路径挂载。这就是我们使用SINGULARITY_BIND-B $SSH_AUTH_SOCK的原因

一种测试您的密钥是否被正确访问的简单方法:

$ singularity exec -B $SSH_AUTH_SOCK myimage.sif ssh -T git@github.com
Hi tsnowlan! You've successfully authenticated, but GitHub does not provide shell access.