从golang,docker和alpine启动SSH代理

austinbv:

我有一个go程序,需要向其添加ssh密钥。容器启动时SSH代理未运行,因此我一直在尝试弄清楚如何启动它。

无论我尝试什么,都会收到ssh-add无法连接到代理的错误

  os.Mkdir("/root/.ssh", 0700)
  privateKeyPath := "/root/.ssh/id_rsa"
  err := ioutil.WriteFile(privateKeyPath, []byte(request.Source.GitPrivateKey), 0600)
  if err != nil {
    log.Panic(err)
  }

  err = exec.Command("ssh-agent").Run()
  if err != nil {
    log.Panic(err)
  }
  err = exec.Command("ssh-add", privateKeyPath).Run()
  if err != nil {
    log.Panic(err)
  }
马克:

ssh-add(以及ssh其他)需要知道如何联系ssh-agent

这是通过SSH_AGENT_SOCK环境变量完成的

运行时ssh-agent,它将打印类似以下内容的内容,通常会对其进行评估:

SSH_AUTH_SOCK=/tmp/ssh-OLGZ7hANaDNH/agent.31224; export SSH_AUTH_SOCK;
SSH_AGENT_PID=31225; export SSH_AGENT_PID;
echo Agent pid 31225;

您在这里有两个选择:

解析值SSH_AUTH_SOCK

然后将其设置为环境变量(例如:使用os.Setenv),以调用ssh-add和进一步调用ssh

或制作自己的临时文件名:

并使用将其指定为自定义绑定地址ssh-agent -a /path/to/my/custom/unix-socket,然后将其设置为SSH_AUTH_SOCK环境变量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章