![无法在远程服务器上启用 UFW——无论配置如何,它都会阻止 SSH](https://linux22.com/image/1143136/%E6%97%A0%E6%B3%95%E5%9C%A8%E8%BF%9C%E7%A8%8B%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E5%90%AF%E7%94%A8%20UFW%E2%80%94%E2%80%94%E6%97%A0%E8%AE%BA%E9%85%8D%E7%BD%AE%E5%A6%82%E4%BD%95%EF%BC%8C%E5%AE%83%E9%83%BD%E4%BC%9A%E9%98%BB%E6%AD%A2%20SSH.png)
我想在通过 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