使用 cloud init config 更改 /etc/ssh/sshd_config 中的默认值

使用 cloud init config 更改 /etc/ssh/sshd_config 中的默认值

我的 Ubuntu18 虚拟机在部署时在 /etc/ssh/sshd_config 中提供了以下默认配置,这使得我与它们的 ssh 会话在 5 分钟不活动时终止:

ClientAliveInterval 300
ClientAliveCountMax 0

我应该将哪些配置添加到我的 cloud_init.cfg 中才能以更高的值部署它们?安全性不是问题。

更新:将其添加到 cloud_init.cfg 中似乎可以解决 Ubuntu16 和 Ubuntu18 的问题,因为我的空闲 ssh 会话持续 >5 分钟:

write_files:
  - path: /etc/ssh/sshd_config
    content: |
         ClientAliveInterval 30000
         ClientAliveCountMax 50

但是 /etc/ssh/sshd_config 文件中通常存在的所有其他参数都会丢失。是否有一个相当于此 sshd 配置文件的文件偶然驻留在其他地方,如果有,完整路径和文件名是什么,以及如何在其中创建这两个值已编辑保持其他一切完好无损?

提前谢谢了!

答案1

扩展@dandreye,考虑到这些可以被注释掉,并设置正确的选项,无论它们的当前值如何。

runcmd:
  - sed -i 's/\#\?ClientAliveInterval .\+/ClientAliveInterval 30000/' /etc/ssh/sshd_config
  - sed -i 's/\#\?ClientAliveCountMax .\+/ClientAliveCountMax 50/' /etc/ssh/sshd_config
  - service ssh restart

不过,更好的选择可能是注释掉不需要的选项并将自定义配置放入 sshd_config.d 中:

write_files:
  - path: /etc/ssh/sshd_config.d/00-cloud-init
    content: |
      ClientAliveInterval 30000
      ClientAliveCountMax 50

runcmd:
  - sed -i 's/\#\?\(ClientAliveInterval .\+\)/#\1/' /etc/ssh/sshd_config
  - sed -i 's/\#\?\(ClientAliveCountMax .\+\)/#\1/' /etc/ssh/sshd_config
  - service ssh restart

答案2

您需要的是包含一行来告诉 cloud-init 追加到 sshd_config 而不是替换整个文件,即append: true。所以你的cloud_init.cfg文件将如下所示:

---
write_files:
  - path: /etc/ssh/sshd_config
    content: |
         ClientAliveInterval 30000
         ClientAliveCountMax 50
    append: true

答案3

显然,将这​​个添加到 /etc/ssh/sshd_config 可以解决问题(经过测试,有效):

runcmd:
  - sed -i 's/ClientAliveInterval 300/ClientAliveInterval 30000/' /etc/ssh/sshd_config
  - sed -i 's/ClientAliveCountMax 0/ClientAliveCountMax 50/' /etc/ssh/sshd_config
  - service ssh restart

相关内容