Py学习  »  docker

Docker Compose上ssh的初始设置

whitebear • 4 年前 • 972 次点击  

我用Docker做MacOS/Win。

我通过Docker容器中shell的ssh连接到外部服务器,

目前,我在Docker shell中生成ssh密钥,并手动将sshkey发送到服务器。

但是在这个方法中,每次我重新构建容器时,sshkey都会被删除。

所以我想在构建映像时设置初始sshkey。

我有2个想法

  1. 将.ssh文件夹从我的macos安装到docker文件夹并保持不变。 (权限控制可能很困难且复杂…)

  2. 编写使ssh keymake&发送到docker-compose.yml或dockerfile中的服务器的脚本。 (每次我构建时,都会发送新密钥…??)

哪个是最佳实践?或者您是否知道自动设置ssh密钥??

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/37948
 
972 次点击  
文章 [ 2 ]  |  最新文章 4 年前
nrapopor
Reply   •   1 楼
nrapopor    5 年前

在阅读“我是Windows用户…”评论后,我认为您解决的问题是错误的。您正在寻找对服务器的简单(健全)shell访问。这是两个简单的解决方案。 1。Windows Linux子系统-- https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux . (不是我的选择)

  1. CygWin—— http://www.cygwin.com --对于你的命令来说,Linux是一种舒适的感觉。

如何安装。

  1. 下载并安装它(注意只选择您需要的基础以外的功能。(有很多而且大部分都是您不需要的——比如编译器和X)。确保选择了ssh。不用担心,您可以根据需要多次重新运行安装程序(我偶尔这样做是为了更新我使用的内容)

  2. 启动bash shell(安装后将有一个链接) 跑 'cygpath-wp$path' B.看看结果——在路径的开头会有几个文件夹,看起来像“c:\cygwin\b in;c:\cygwin\usr\local\b in;…”只要您将cygwin安装到“c:\cygwin”目录中,所有以“c:\cygwin”开头的路径就可以了。 c.将这些路径添加到系统路径中 d.启动一个新的命令实例。运行 “LS” 它现在应该可以直接在WindowsShell下工作。

  3. 额外贷款。

    a.将C:\cygwin\home\<username>目录中第一次启动shell时创建的所有“.xxx”文件移动到Windows Home目录(C:\users\<username>)。

    B.退出所有正在运行的bash shell

    c.删除c:\cygwin\home目录

    d.使用Windows mklink实用程序在cygwin下创建一个名为home的链接,指向c:\users(管理员shell) 'mklink/j c:\cygwin\home c:\users' 这将使Windows主目录与Cygwin主目录相同。

之后,您将按照cygwin bash下ssh的正常设置进行操作,并且您将能够生成密钥并将它们正常分发到服务器。

注意:您必须将凭据从Windows传播到您的<home>/。ssh文件夹(在文件夹的安全设置中)只保留您的用户ID。然后为使用ssh适当地设置文件夹和下面的各种密钥文件的权限。 “CHMOD” .

享受——有些日子我不得不眯着眼睛想起来我在一个窗户上…

David Maze
Reply   •   2 楼
David Maze    5 年前

最佳实践通常是不从容器进行出站ssh连接。如果要添加到容器中的是二进制代码或应用程序代码,请在Docker之外管理源代码管理设置,并将数据复制到图像中。如果应用程序需要运行其数据,请再次从外部获取并使用 docker run -v 把它注入容器。

正如您所说,安全地管理这个关键材料,并遵守sshs-unix权限要求,是非常棘手的。如果我真的没有选择,但要做这个ID,请编写一个入口点脚本,将私钥从绑定装载的卷复制到容器用户。 .ssh 目录。但我的第一选择是重新设计我的应用程序流,根本不需要这个。