从Docker实例使用Bitbucketpipe道SSH进入登台机器

使用新的Bitbucketpipe道function,我怎样才能从它启动的docker集装箱SSH进入我的舞台框?

我的pipe道中的最后一步是一个.sh文件,它在分段中部署必要的代码,但是因为我的分段复制框使用公钥authentication,并且不知道docker容器,所以SSH连接被拒绝。

无论如何绕过这个,而不使用通过SSH密码authentication(这是通过不断select通过公钥进行身份validation,导致我的问题)?

Bitbucketpipe道可以使用你创build的Docker镜像,只要它在一个可公开访问的容器registry上被托pipe,就可以在你的构build过程中运行ssh客户端设置。

创build一个Docker镜像。

用你的ssh密钥创build一个Docker镜像 。 该图像还需要在您的环境(s)保存容器将运行的用户下的主机密钥 。 这通常是root用户,但如果在DockerfileUSER命令,则可能会有所不同。

您可以复制已经填充的known-hosts文件或在映像构build时dynamicconfiguration文件:

 RUN ssh-keyscan your.staging-host.com 

发布图像

将您的图像发布到可公开访问但私密的registry。 你可以自己托pipe或使用像Docker Hub这样的服务。

configurationpipe道

configurationpipe道以build立您的泊坞窗图像 。

如果你使用Docker Hub

 image: name: account-name/java:8u66 username: $USERNAME password: $PASSWORD email: $EMAIL 

或者你自己的外部registry

  name: docker.your-company-name.com/account-name/java:8u66 

限制您的主机访问

您不希望使用ssh密钥访问在世界各地飞行的主机,所以我也会限制这些部署ssh密钥的访问权限,以便只运行您的部署命令 。

临时主机上的authorized_keys文件:

 command="/path/to/your/deploy-script",no-agent-forwarding,no-port-forwarding,no-X11-forwarding ssh-dss AAAAC8ghi9ldw== deploy@bitbucket 

不幸的是,bitbucket 不会发布IP列表来限制对pipe道使用共享基础设施的访问 。 如果他们碰巧在AWS上运行,那么Amazon会发布IP列表 。

 from="10.5.0.1",command="",no-... etc 

还记得要约会他们时不时到期。 我知道SSH密钥不强制执行date,但无论如何这是一个好主意。

您现在可以在pipe道设置下设置SSH密钥,以便您不需要拥有专用的泊坞窗图像来存储ssh密钥。 这也是从你的源代码中提取的,所以你也没有在你的回购中。

 Settings -> Pipelines -> SSH keys 

您可以提供一个密钥对或生成一个新的密钥对。 私钥放在~/.ssh/config的docker容器中,并为您提供一个可以放入您的主机的~/.ssh/authorized_keys~/.ssh/authorized_keys文件。 该页面还需要一个IP或名称,以便在Docker上运行时为已知主机设置指纹。

此外,Bitbucket提供了IP地址,如果需要的话,可以将白名单列入正在启动的docker集装箱。 他们目前是 :

  • 23.20.208.24/32
  • 52.7.19.238/32
  • 52.55.104.10/32
  • 52.203.194.12/32
  • 34.236.25.177/32
  • 34.232.25.90/32
  • 52.203.14.55/32