配置 SSH 和 iptables 时防止被锁定

配置 SSH 和 iptables 时防止被锁定

当您通过 SSH 配置 iptables 或 SSH,并且数据中心远在数千公里之外(并且让某人在那里插入 KVM 很困难)时,有哪些标准做法可以防止将自己锁定在外?

答案1

有一个类似的问题通过 SSH 配置 iptables 而不被锁定?

我在这里发布我在上一个问题中给出的提示:

1)我备份了旧的iptables配置文件:

cp /etc/sysconfig/iptables /etc/sysconfig/iptables.bak

2)在尝试新设置之前,请执行此命令以确保如果新设置中的某些内容将您锁定,您可以重新连接(基本上它会在 5 分钟后取代旧规则):

echo "mv /etc/sysconfig/iptables.bak /etc/sysconfig/iptables && service iptables restart" | at now + 5min

3) 现在您可以安全地修改 iptables 规则。如果出现问题,您可以在 5 分钟内重新连接。

答案2

如果您需要修改 SSH 配置,例如/etc/ssh/sshd_config:在另一个终端中保持会话打开。这通常会保持打开状态,但当然您也可以使用与 @shardan 的帖子中类似的技巧来修改 SSH 配置。

答案3

确保您有权访问的另一种方法是在远程服务器上使用 ssh 的 -R 标志:

/usr/bin/ssh -R 55555:localhost:22 [email protected]

您现在可以从 your.otherserver.com 使用以下命令登录到远程计算机:

ssh localhost -p 55555

为了确保我不会被锁定超过 5 分钟,我运行了一个 cron 作业,该作业在远程服务器上运行以下 shell 脚本:

#! /bin/sh 
GREPSSH=$(ps ax|grep serverkey|awk -F ' ' '{print $1}')
if [ "$GREPSSH" -eq NULL ]
then
echo "no sshlink \n"
/usr/bin/ssh -nNT -i ~/.ssh/serverkey -R 55555:localhost:22 -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes [email protected] &
else echo $GREPSSH
exit 1
fi

此脚本:

  • 检查出站 ssh 是否正在运行
  • 如果没有,则使用各种选项(-nNT 和 -o)和 -R 启动它,以便将端口转发到远程服务器
  • 使用 ssh 身份密钥 (-i) 允许无需密码登录 your.otherserver.com

我发现这是一个返回远程机器的有用工具:~)

相关内容