ICMP: code :13 = Communication Administratively Prohibited

239 篇文章 ¥59.90 ¥99.00

RFC: 792 INTERNET CONTROL MESSAGE PROTOCOL
RFC:1812: Requirements for IP Version 4 Routers
type 3, Destination Unreachable
13 = Communication Administratively Prohibited - generated if a router cannot forward a packet due to administrative filtering;

这个错误的原因可能是Linux上打开了firewalld;
从错误的注解可以看的,这个错误的原因是:管理员主动设置禁止交流的配置。所以绝大多数通过管理员做配置的防火墙,iptables之类的软件,可能会回复icmp 带着 code = 13。

当然也可以在iptable设置拒绝包时提示 code=13;

对ping request 的反应参数:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all

man icmp

<think>嗯,用户遇到了一个很具体的网络连接问题:VSCode远程连接时出现'administrativelyprohibited'错误。这个错误提示比较专业,说明用户可能是有一定技术背景的开发人员或系统管理员。从ta急切地寻求解决方案来看,可能正在远程办公或需要紧急调试服务器,情绪上应该有些焦虑。回顾之前的引用内容,虽然提供了防火墙规则执行失败和IP层测试的相关技术背景,但并没有直接解决这个特定错误。引用[1]中提到的防火墙脚本执行问题倒是有些关联,因为SSH连接中断往往和防火墙规则变更有关。这个错误的本质是目标服务器拒绝了我们的连接请求,核心排查点应该是三个层面:服务器防火墙配置(尤其是iptables/nftables)、SSH服务自身的访问控制列表、以及中间网络设备的限制。其中引用[1]和[2]提到的规则执行顺序和严格模式测试特别值得注意——防火墙规则顺序错误可能意外阻断连接,而SSHD的严格模式可能因认证失败直接返回'prohibited'提示。考虑给用户一个阶梯式的解决方案,优先检查服务器端最可能出现问题的地方。首先建议查看服务器防火墙状态,因为这是最高发的原因;其次是SSH配置文件和日志,最后是网络层设置。对于引用[3]提到的hosts通信规范,虽然与错误没有直接关联,但IP层协议一致性始终是基础保障。计划在回答中融入引用[1]的关键点:当用户通过SSH修改防火墙时,如果规则有错误可能导致连接中断。这时候建议用户使用nftables而不是iptables来操作防火墙,因为nftables规则加载更原子化。同时在测试规则时务必要保持两个活跃会话,这点需要特别强调,否则用户可能会把自己锁在服务器外。</think> 针对VSCode远程连接时出现的 `administratively prohibited` 错误,此错误通常表示目标服务器**主动拒绝了连接请求**。以下是系统化的排查与解决方案: --- ### 一、核心原因分析 此错误表明连接尝试被目标服务器的策略明确阻止,主要原因包括: 1. **服务器防火墙拦截**(引用[1]关联) - 服务器防火墙规则(如`iptables/nftables`)可能丢弃或拒绝SSH端口(默认22)的连接 - 若通过SSH修改防火墙时规则错误,可能导致连接中断(引用[1]中提到的规则执行失败场景) 2. **SSH服务配置限制** - `sshd_config` 中 `AllowUsers`/`AllowGroups` 未包含当前用户 - `DenyUsers` 或IP黑名单包含当前用户/IP 3. **目标主机网络层限制**(引用[2]关联) - 路由器或主机执行了协议合规性检查(如RFC 1122),拒绝非法包(引用[3]) --- ### 二、分步解决方案 #### ▶ 第一步:检查服务器防火墙规则 ```bash # 查看当前iptables规则(需提前登录服务器) sudo iptables -L -n -v --line-numbers # 检查是否存在针对SSH端口的DROP/REJECT规则 # 重点排查INPUT链和FORWARD链 # 临时开放SSH端口(测试用) sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT ``` > **关键提示**:通过SSH修改防火墙时,务必保持**至少两个活动会话**(引用[1]),避免规则错误导致连接中断。 #### ▶ 第二步:检查SSH服务配置 在目标服务器修改 `/etc/ssh/sshd_config`: ```ini # 确保允许用户登录 AllowUsers your_username # 添加你的用户名 # 注释或删除拒绝规则 # DenyUsers restricted_user ``` 重启服务后验证: ```bash sudo systemctl restart sshd sudo systemctl status sshd # 查看服务状态 ``` #### ▶ 第三步:网络层排查(引用[2][3]) 1. **主机协议栈检查** - 使用 `tcpdump` 捕获SSH握手包: ```bash sudo tcpdump -i any port 22 -nnvvv ``` - 检查是否有非法IP包被丢弃(RFC 1122合规性问题) 2. **中间设备策略** - 联系网络管理员确认路由器/防火墙是否拦截: - 检查ACL策略是否允许源IP访问目标22端口 - 是否启用IP头部校验(引用[2]) --- ### 三、诊断工具使用 | 工具 | 命令示例 | 作用 | |------|----------|------| | `nc` | `nc -zv 目标IP 22` | 测试端口连通性 | | `ss` | `ss -tuln | grep :22` | 检查SSH端口监听状态 | | `journalctl` | `journalctl -u sshd -f` | 实时查看SSH登录日志 | --- ### 四、备用连接方案 若仍无法解决,尝试: 1. 使用SFTP客户端(如WinSCP)验证服务器连通性 2. 通过 **VSCode的"Remote-SSH: Show Log"** 查看详细错误日志 > 路径:Command Palette → `Remote-SSH: Show Log` → `Remote - SSH` --- ### 五、引用说明 [^1]: 防火墙规则执行失败可能导致连接中断,尤其在SSH会话中修改规则时需保持冗余会话 [^2]: 网络设备需遵守RFC规范丢弃非法包,可能因协议栈问题触发拒绝 [^3]: RFC 1122定义了主机通信层基础要求,违规包可能被拒绝
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mzhan017

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值