【问题标题】:Starting sshd automatically if it is down/failed如果关闭/失败,则自动启动 sshd
【发布时间】:2015-09-30 01:04:06
【问题描述】:

我正在尝试为 cronjob 创建一个 Bash .sh 脚本,如果 OpenSSH 服务器关闭或失败,它会启动它。

昨晚 SSH 服务器关闭了,当我今天(从工作中)尝试访问它时,连接被拒绝了。 /var/log/messages 中没有失败的痕迹。

所以问题是——如何判断sshd是否正在运行所以如果不是“sudo service ssh start”呢?

提前致谢!

【问题讨论】:

  • 这听起来很可疑。在不了解原因的情况下尝试“修复”某事从不是个好主意。
  • 你的系统有systemd吗?可以使用 journalctl 查看日志文件。
  • 不,系统没有systemd也没有journalctl
  • 确保sshd服务器不会崩溃

标签: linux bash ssh cron


【解决方案1】:

正如其他人所说,在没有找到导致此问题的原因的情况下启动它是不正确的,但是我为您想要的脚本写了一些帮助

  1. 首先您应该检查您的 openssh 服务器的状态,例如:

ps -aux | grep ssh

  1. 然后写一个 if 来检查它是否关闭

    您可以根据上一步的结果进行检查。

  2. 如果已关闭,请启动它

sudo 服务 ssh 启动

【讨论】:

  • 我在想:ps -aux | grep SSH | wc -l 但这会输出不同的输出,具体取决于与 SSH 服务器的连接数。
【解决方案2】:

伙计们,我相信我已经成功地完成了任务:

#!/bin/bash
service="ssh"

if (( ! $(sudo service ssh status | cut -d" " -f 3 | cut -d"." -f 1) == "running" ))
then
        sudo /etc/init.d/ssh restart
fi

我已经把LogLevel改成了Verbose,希望下次能追踪到更多关于sshd失败的线索。

【讨论】:

    【解决方案3】:

    我正在执行以下操作:

    [ $(sudo service ssh status | grep running | grep -v grep | wc -l) == 0 ] && sudo /etc/init.d/ssh restart
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-01
      • 2017-10-18
      • 1970-01-01
      • 2014-05-18
      • 2016-11-30
      • 2017-05-25
      • 2013-05-14
      相关资源
      最近更新 更多