当您通过 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
我发现这是一个返回远程机器的有用工具:~)