Назад | Перейти на главную страницу

Предотвращение блокировки при настройке SSH и iptables

Когда вы настраиваете iptables или SSH через SSH, а центр обработки данных находится в тысячах километров (а заставить кого-то подключить KVM сложно), каковы стандартные методы предотвращения блокировки?

Был похожий вопрос Настроить iptables через SSH без блокировки?

Я размещаю здесь советы, которые дал в предыдущем вопросе:

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 минут.

Если вам нужно изменить конфигурацию SSH, например, в /etc/ssh/sshd_config: Оставить сеанс открытым в другом терминале. Обычно он остается открытым, но, конечно, вы можете использовать тот же трюк, что и в сообщении @ shardan, и для конфигурации SSH.

Другой способ убедиться, что у вас есть доступ, - использовать флаг -R для ssh на удаленном сервере:

/usr/bin/ssh -R 55555:localhost:22 user@your.otherserver.com

Теперь с your.otherserver.com вы можете войти на удаленный компьютер, используя:

ssh localhost -p 55555

Чтобы убедиться, что я не заблокирован более 5 минут, я запускаю задание cron, которое запускает следующий сценарий оболочки на удаленном сервере:

#! /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 user@your.otherserver.com &
else echo $GREPSSH
exit 1
fi

Этот сценарий:

  • проверяет, запущен ли исходящий ssh
  • если нет, он запускает его с различными параметрами (-nNT и -o) и -R для перенаправления портов на удаленный сервер
  • использует ключ идентификации ssh (-i), чтобы разрешить вход без пароля на your.otherserver.com

Я обнаружил, что это полезный инструмент для возврата к удаленным машинам: ~)