TL;DR:我正在尝试修改 sshd_conf 并将二进制文件添加到容器优化的操作系统映像中。修改是不是疯了chromeos-base-2.ebuild
?
背景
我正在(尝试)使用https://cloud.google.com/container-optimized-os/docs/how-to/building-from-open-source 中的说明构建我自己的容器优化操作系统映像。我的目标是交换我们的 SSH 身份验证部分。
为此,我需要执行两个操作:
我正在尝试以容器优化的操作系统友好方式来做到这一点。
我的想法是我修改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 上的图像。
问题:
我最初的方法是使用 packer 来简单地更改配置并添加二进制文件,但二进制文件需要是可执行的。我想我可以把二进制文件放进去,/var/lib/cloud
但这感觉有点脏。
最好使用自定义配置在容器中简单地运行您自己的 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_config 被默认设置覆盖。
确保您已经增加了 ebuild 修订版。chromeos-base-2-r25.ebuild
即将符号链接重命名为chromeos-base-2-r26.ebuild
. 这是必要的,以确保您对包的更改被选中。否则使用缓存中的预构建包。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句