ubuntu - 奇点/ubuntu:如何使用主机正宗代理
问题描述
从 ubuntu 18.04(或更高版本)创建的奇异映像有一个运行脚本,其中包括使用 ssh git clone 一些存储库。
理想情况下,我希望:执行映像时,主机的(已激活)ssh 密钥用于(git ssh clone)身份验证。
所以事情可以像这样运行:
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
长答案:是的,只要将正确的目录和环境变量传递给图像。
你需要:
git
/ssh
安装在奇异映像中(可能在也可能不在默认 docker 映像中)- 您
$HOME
安装的目录。这是默认设置,但可能需要手动执行 (-H /home/my_user
),具体取决于配置 SSH_AUTH_SOCK
已导出ssh-agent 环境变量。默认情况下,您的主机环境被传递到容器中,但这可以禁用-e | --cleanenv
- 另请参阅:有关环境变量的文档
- 安装路径中设置的路径
$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.
推荐阅读
- ssh - 使用 SSH 将第二个 repo 克隆到 config.yml circleci 时出错
- c - 如何在C中正确动态分配数组?
- spring-boot - SpringBoot @ConfigurationProperties 问题与包含 / 的键有关
- anylogic - 服务图中的代理数量在服务块队列中的等待时间?任意逻辑
- javascript - 快递回拨订单问题
- docker - 如何从单独的 Docker 容器中调用 ASP.NET Core Web API 端点
- elasticsearch - 如何将一些 ElasticSearch 数据复制到新域
- python - 从常量值中减去满足条件的列值
- ruby-on-rails - 返回一系列作者书籍,多对多关系
- html - 如何在 CSS 中将图像与标题覆盖并排放置(下面有一个粘性表格标题)