首页 > 解决方案 > 奇点/ubuntu:如何使用主机正宗代理

问题描述

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

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

所以事情可以像这样运行:

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

这可能吗?

标签: ubuntussh-keyssingularity-container

解决方案


简短的回答:是的

  • 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_AUTH_SOCK已导出ssh-agent 环境变量。默认情况下,您的主机环境被传递到容器中,但这可以禁用-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.

推荐阅读