singularity / ubuntu:如何使用主机认证代理



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

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

可以这样运行:

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

这可能吗?

简短回答:yes

  • 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. 导出
  4. ssh-agent环境变量SSH_AUTH_SOCK。默认情况下,将主机环境传递到容器中,但可以使用-e | --cleanenv禁用此功能
    • 参见:docs on environment variables
  5. $SSH_AUTH_SOCK中设置的挂载路径。这就是为什么我们使用SINGULARITY_BIND-B $SSH_AUTH_SOCK
    • 参见:docs关于绑定路径和挂载

一个简单的方法来测试你的密钥是否被正确访问:

$ 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.

相关内容

  • 没有找到相关文章

最新更新