【问题标题】:Drop ssh connection if file exists如果文件存在则断开 ssh 连接
【发布时间】:2016-02-22 09:57:45
【问题描述】:

为了被允许使用 ssh-key 登录,我被要求确保在服务器处于维护模式时任何新连接都会失败。我可以通过检查文件是否存在来确定服务器是否处于维护模式。到目前为止,我尝试将以下内容放入我的 .ssh/rc 文件中,但我仍然能够连接。谁有更好的解决方案?

if [ -e $CHECK_FILE ]
then
    echo "Under Maintenance... login disabled"
    kill -9 $$
    #exit -1
fi

【问题讨论】:

  • 只用/etc/nologin?
  • 在执行此操作之前,请确保您可以直接以 root 身份登录:echo "Under Maintenance... login disabled" > /etc/nologin
  • exit 不起作用吗?
  • @shellter: sshd 运行类似这样的东西:sh -c "/bin/bash -c '/bin/sh .ssh/rc'" 你只留下 sh script rc。
  • @cyrus :谢谢,很高兴知道。 :-)

标签: bash ssh remote-access ssh-keys


【解决方案1】:

使用维护消息创建/etc/nologin,以防止通过ssh 进行任何登录(或者在此期间直接终止sshd)。

但是,如果维护是通过 ssh 完成的,那么您需要允许 一些 用户登录。在这种情况下,更新 /etc/sshd_config 类似

AllowUsers bob

防止除“bob”以外的任何人登录。

【讨论】:

  • 我会向服务器维护者建议这个,但我只是一个用户。你知道我有一种方法可以自动终止我自己的连接吗?
  • Anything 您放在远程主机上意味着您可以在执行之前进行连接。这真的不是您作为用户应该负责的事情。如果管理员在维护期间不希望人们登录,他们应该让系统不可用,而不是依靠用户立即注销。
【解决方案2】:

如果你使用 Linux 从~/.ssh/rc 杀死你自己的 sshd:

killall sshd

【讨论】:

  • 谢谢,我早该想到的。它正是我想要的。我确实注意到,虽然 chepner 认为这不是处理事情的适当方式是正确的……但我不负责服务器,也不负责维护。但为了使用服务器,我必须接受经理的任意请求。
猜你喜欢
  • 2016-08-26
  • 2017-01-06
  • 2021-07-15
  • 1970-01-01
  • 2022-10-24
  • 1970-01-01
  • 1970-01-01
  • 2021-01-31
  • 1970-01-01
相关资源
最近更新 更多