无法在远程服务器上启用 UFW——无论配置如何,它都会阻止 SSH

无法在远程服务器上启用 UFW——无论配置如何,它都会阻止 SSH

我想在通过 SSH 连接时在远程机器上设置 ufw。我输入

ufw reset
ufw default deny incoming
ufw default allow outgoing

ufw allow ssh
ufw allow 22
ufw enable

之后它会立即阻止 ssh 连接,并且不接受新的连接。我唯一能做的就是重置服务器。我是不是漏掉了什么?

编辑 1:当然,因为我已配置 ssh。我通过 SSH 访问服务器。这意味着它已配置,并且我在运行之前可以连接到服务器ufw enable

答案1

我目前也遇到了同样的问题。目前,我已将此作为解决方法。

ufw default allow incoming
ufw deny 1:21/tcp
ufw deny 23:65535/tcp

答案2

在 Ubuntu 16.04.2 上,在全新安装的情况下执行此操作对我来说很顺利,即使在重启后也是如此

ufw enable
ufw allow ssh
ufw allow 22
ufw enable

答案3

我使用expect命令解决了:

apt install expect -y

if [ -n "$SSH_CONNECTION" ] || [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then
  expect -c "
    set timeout 3
    spawn ufw enable

    expect \"Command may disrupt existing ssh connections\"
    send -- \"y\r\"
    expect eof
"
else
  ufw enable
fi

apt purge expect -y

答案4

按照文档您可以通过以下方式远程启用 ufw:

ufw --force enable

在这种情况下它不会要求确认,因此上述命令可以在 bash 脚本中使用。

相关内容