后备 sshd_config 脚本

后备 sshd_config 脚本

有没有办法运行如下脚本:

cp /etc/ssh/sshd_config.orginal /etc/ssh/sshd_config
reboot

如果我/etc/ssh/sshd_config失败了?


我为什么需要这个?

嗯,有时候当我编辑文件时,它会导致我无法在计算机上与 root 用户建立 ssh 连接。这是一个巨大的因为我距离我的电脑有 200 英里!


目前,当我编辑文件时,我打开了一个 cron:

*/10 * * * * /usr/bin/ssh_replace.sh

它运行上面的脚本,但这非常麻烦,因为我必须在完成后将其关闭,并在想要开始编辑时将其打开。

答案1

我相信您已经使用的方法是唯一真正有效的方法。主要问题是,如果 ssh 守护程序配置失败,服务器如何知道它失败了?
理论上,您可以编写一个脚本,用正确的备份版本替换错误的配置,但这仅在服务器可以检测到配置失败时才有用,例如,如果 ssh 守护程序崩溃,则该进程将消失,这可能表明是时候进行备份了。
但是,您可以在守护程序仍处于活动状态时进行对 ssh 连接产生负面影响的调整。这是您无法检测到的,因此备份不会被复制。

答案2

SSH 使用 Upstart 启动,并使用 Upstart 的respawn选项在进程终止时重新启动它。因此,您可以尝试检测 SSH 作业何时达到重生限制,并使用已知良好的配置覆盖该配置。例如:

# cat /etc/init/ssh-safe.conf
start on stopped ssh RESULT="failed" PROCESS="respawn"
script
  cp /etc/ssh/sshd_config.original /etc/ssh/sshd_config
  start ssh RESTARTED_BY_WATCHDOG=1 || true
end-script

相关内容