【问题标题】:Initial setup for ssh on docker-composedocker-compose 上 ssh 的初始设置
【发布时间】:2018-11-11 02:09:36
【问题描述】:

我正在为 MacOS/Win 使用 docker。

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

目前,我在 docker shell 中生成 ssh-key,并手动将 sshkey 发送到服务器。

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

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

我有两个想法

  1. 将 .ssh 文件夹从我的 macOS 挂载到 docker 文件夹并保留。 (权限控制可能很困难和复杂......)

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

最佳做法是什么?或者你有什么想法自动设置 ssh-key??

【问题讨论】:

  • 我不明白你为什么要以这种方式使用 ssh,但你可以用你的 ssh 垃圾构建镜像,然后在你的应用程序的 Dockerfile 中使用这个镜像作为基础镜像......这样钥匙留在那里,所以你会做FROM whitebear/sshcrap:latest

标签: docker ssh docker-compose


【解决方案1】:

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

正如您所说,安全地管理此密钥材料并遵守 ssh 的 Unix 权限要求非常棘手。如果我真的别无选择,只能这样做,我会编写一个 ENTRYPOINT 脚本,将私钥从绑定安装的卷复制到我的容器用户的 .ssh 目录。但我的第一选择是重新设计我的应用程序流程以完全不需要它。

【讨论】:

  • 我是 Windows 用户。我以前用过 OSX。 OSX 的 shell 是 bash,所以你可以使用 less cat 等等。但是,在 Windows Power Shell 上,我需要学习 Power Shell 命令。所以我尝试使用 docker 作为日常工作 bash。但是,这可能不是一个好主意。我会安装 Cygwin 或 MingW 之类的应用程序
【解决方案2】:

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

  1. Cygwin -- http://www.cygwin.com -- 为您的 cmd 带来舒适的 Linux 感觉 :-)

我如何安装它。

  1. 下载并安装它(注意只选择您需要的基本功能之外的功能。(有很多您不需要的功能,其中大部分是您不需要的——比如编译器和 X)。确保 SSH已选中。不用担心,您可以根据需要多次重新运行设置(我偶尔会这样做以更新我使用的内容)

  2. 启动bash shell(安装后会有链接) 一个。运行 'cygpath -wp $PATH' 湾。看看结果——在路径的乞求中会有几个文件夹看起来像 "C:\cygwin\bin;C:\cygwin\usr\local\bin;..." 只是所有的路径如果您将 Cygwin 安装到“C:\Cygwin”目录中,则以“C:\cygwin”开头。 C。将这些路径添加到您的系统路径 d。启动一个新的 CMD 实例。运行 'ls' 它现在应该可以直接在 windows shell 下运行了。

  3. 额外学分。

    一个。将第一次启动 shell 时在 C:\cygwin\home\ 目录中创建的所有“.xxx”文件移动到 Windows 主目录 (C:\Users\)。

    b.退出您正在运行的任何 bash shell

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

    d。使用 windows mklink 实用程序在 cygwin 下创建一个名为 home 的链接,指向 C:\Users (Administrator shell) 'mklink /J C:\Cygwin\home C:\Users' 这将使您的 Windows 主目录与您的 cygwin 主目录相同。

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

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

享受吧——有时候我不得不眯着眼睛记住我是在一个 Windows 盒子上......

【讨论】:

    猜你喜欢
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-02
    相关资源
    最近更新 更多