代码之家  ›  专栏  ›  技术社区  ›  Niklas B

构建容器优化的os-swap ssh实现

  •  0
  • Niklas B  · 技术社区  · 6 年前

    DR: 我正在尝试修改sshd_conf并将二进制文件添加到容器优化的os映像中。修改是不是太疯狂了 chromeos-base-2.ebuild ?

    背景
    我正在(尝试)使用来自 https://cloud.google.com/container-optimized-os/docs/how-to/building-from-open-source . 我的目标是交换ssh认证部分。

    为此,我需要执行两个操作:

    1. 修改sshd配置
    2. 包括一个额外的二进制文件(可执行)

    我试着用一种容器优化的操作系统友好的方式来做这件事。

    我的想法是我修改 src/overlays/overlay-lakitu/chromeos-base/chromeos-base/chromeos-base-2.ebuild 要包括我的二进制文件:

    insinto /usr/sbin
    doins "${FILESDIR}"/sshauth
    fperms 700 /usr/sbin/sshauth
    

    然后改变 src/overlays/overlay-lakitu/chromeos-base/chromeos-base/files/sshd_config 包括:

    RSAAuthentication yes
    PubkeyAuthentication yes
    AuthorizedKeysFile  /dev/null
    AuthorizedKeysCommand /usr/sbin/sshauth
    AuthorizedKeysCommandUser root
    

    然后我跑 emerge-lakitu chromeos-base 重新构建我刚修改过的包。然后我跑 ./build_image --board=lakitu base 把它当作GCE上的图像。

    问题:

    1. 这是疯了吗?
    2. 我的二进制文件包含在生成的图像中,但我更改的sshd配置将被默认配置覆盖。

    我最初的方法是使用packer简单地更改配置并添加二进制文件,但是二进制文件需要是可执行的。我想我可以把二进制 /var/lib/cloud 但那感觉有点脏。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Aditya K.    6 年前

    最好使用自定义配置在容器中运行自己的sshd代理。 这里有一个很好的例子: https://docs.docker.com/engine/examples/running_ssh_service/ 我也在cos上测试和工作。

    确保使用iptables打开服务器正在侦听的端口。 sudo iptables -A INPUT -p tcp --dport <port> -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp --sport <port> -m conntrack --ctstate ESTABLISHED -j ACCEPT

    如果需要,您还可以停止内置sshd服务并从主机本身重用端口22。

    希望这有帮助。

    编辑: 关于:

    我的二进制文件包含在生成的图像中,但我更改的sshd配置将被默认配置覆盖。

    确保已递增ebuild修订版。即 重命名 chromeos-base-2-r25.ebuild 链接到 chromeos-base-2-r26.ebuild . 这是必需的,请确保您对包的更改已被接受。否则将使用缓存中的预构建包。

        2
  •  0
  •   Niklas B    6 年前

    对于通过google来到这里的任何人,除了在容器中运行sshd之外,还可以使用cloud init设置sshd配置。然后,工作流是:

    1. 禁用sshd(最好在bootcommand中)
    2. 通过wget下载新的sshd配置(从gcs或类似站点)
    3. 重新启动sshd

    用阿迪亚的话说:

    我强烈建议使用容器化ssh服务器 方法(如果需要,可以禁用主机sshd)。 或者,您可以从 云配置。这样,即使/etc/下的更改不是 持久性,它们只会在每次启动时重新应用。

    tl;dr:试着不要卷起你自己的cos图像,你最终会失去快速的发展(并且需要自己支持它)