You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ubuntu服务器上禁用用户的SSH出站连接同时保留入站SSH访问权限?

如何在Ubuntu服务器上禁用用户的SSH出站连接同时保留入站SSH访问权限?

嗨,我来帮你搞定这个配置!要实现禁止服务器上的用户发起SSH出站连接,但保留外部机器对你的Ubuntu服务器的SSH入站访问,用Ubuntu自带的UFW防火墙是最直观且易维护的方案,下面是详细步骤:

步骤1:确认UFW状态并启用(如果未启用)

首先检查UFW是否已经在运行:

sudo ufw status

如果显示inactive,先别急着启用——如果你是远程操作服务器,一定要先确保入站SSH已经被允许,不然启用防火墙后会直接断开连接。先执行入站允许命令,再启用UFW:

sudo ufw allow ssh
sudo ufw enable

当系统提示“Command may disrupt existing ssh connections. Proceed with operation (y|n)?”,输入y确认即可。

步骤2:拒绝所有SSH出站连接

现在添加规则禁止服务器上的所有用户发起SSH出站请求:

sudo ufw deny out ssh

如果你服务器上的SSH用的不是默认的22端口(比如改成了2222),请把命令里的ssh换成对应的端口号,比如:

sudo ufw deny out 2222/tcp

步骤3:验证配置是否生效

  • 验证入站访问:从你的本地机器或者其他外部服务器尝试SSH连接到这台Ubuntu服务器,应该能正常登录,说明入站权限没问题。
  • 验证出站限制:在Ubuntu服务器上用普通用户执行ssh username@external-server.com(替换成真实的外部服务器地址),你会发现连接被拒绝,无法建立SSH会话。

备选方案:用iptables配置(适合更进阶的场景)

如果你习惯用原生iptables而不是UFW,也可以直接添加规则:

  1. 允许入站SSH连接:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  1. 拒绝所有SSH出站连接:
sudo iptables -A OUTPUT -p tcp --dport 22 -j REJECT

配置完后记得保存iptables规则,确保重启后依然生效:

sudo iptables-save | sudo tee /etc/iptables/rules.v4

额外提示(可选)

如果之后需要给特定用户开放SSH出站权限(比如管理员账户),可以通过iptables的owner模块来匹配用户,或者在UFW里针对特定用户组设置例外规则,但这属于进阶配置,如果你没有这个需求的话可以暂时忽略。

备注:内容来源于stack exchange,提问作者Mousavi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 10:29:41