从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
长答案:是的,只要正确的目录和环境变量传递给映像。
你需要:
git
/ssh
安装在奇点镜像中(可能在也可能不在默认的docker镜像中)- 您的
$HOME
目录已挂载。这是默认设置,但可能需要手动执行(-H /home/my_user
),具体取决于配置 导出 - ssh-agent环境变量
SSH_AUTH_SOCK
。默认情况下,将主机环境传递到容器中,但可以使用-e | --cleanenv
禁用此功能- 参见:docs on environment variables
- 在
$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.