我的 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