VSCode使用ssh远程连接银河麒麟V11提示"Forwarding tcp error"禁止TCP端口转发

vscode终端输出内容如下

image

 

博主是在关闭防火墙、安全工具中所有工具、并启动运维模式下进行修复的。

修正方式

1. 修改配置文件

登录远程服务器,使用文本编辑器(如 vimnano)打开 SSH 配置文件:

sudo vim /etc/ssh/sshd_config

2. 检查并修改参数

在文件中找到以下两项,确保它们被设置为 yes。如果前面有 # 号,请删掉以取消注释:

  • AllowTcpForwarding yes (最关键,目前你的服务器应该是 no 或者被注释掉了)

  • PermitOpen any (关键)
  • AllowStreamLocalForwarding yes (建议一并开启)

3. 重启 SSH 服务

修改保存后,必须重启 SSH 服务才能生效:

sudo systemctl restart sshd

 # 或者

sudo service ssh restart

 

4.重启服务后

通过以下两个命令确保 AllowTcpForwarding 和 PermitOpen的值是正确的

sudo sshd -T | grep -i "allowtcpforwarding"
sudo sshd -T | grep -i "permitopen"

 

5. AI提供以下脚本进行处理(博主未使用过)

#!/bin/bash

# 检查是否为 root 权限
if [ "$EUID" -ne 0 ]; then 
  echo "请使用 sudo 运行此脚本"
  exit
fi

SSHD_CONFIG="/etc/ssh/sshd_config"
BACKUP_CONFIG="/etc/ssh/sshd_config.bak.$(date +%F_%T)"

echo "--- 开始检查 SSH 端口转发配置 ---"

# 1. 备份原始配置
cp $SSHD_CONFIG $BACKUP_CONFIG
echo "[1/4] 已备份配置至: $BACKUP_CONFIG"

# 2. 修改 AllowTcpForwarding
if grep -q "^AllowTcpForwarding" $SSHD_CONFIG; then
    sed -i 's/^AllowTcpForwarding.*/AllowTcpForwarding yes/' $SSHD_CONFIG
else
    echo "AllowTcpForwarding yes" >> $SSHD_CONFIG
fi
echo "[2/4] 已确保 AllowTcpForwarding 为 yes"

# 3. 处理 PermitOpen
# 先删除所有已有的 PermitOpen 限制行(包括 PermitOpen none)
sed -i '/^PermitOpen/d' $SSHD_CONFIG
# 插入 PermitOpen any
echo "PermitOpen any" >> $SSHD_CONFIG
echo "[3/4] 已确保 PermitOpen 为 any"

# 4. 检查子配置文件 (sshd_config.d)
# 麒麟等系统经常在子目录里藏有 PermitOpen none
CONF_D="/etc/ssh/sshd_config.d/*.conf"
if ls $CONF_D 1> /dev/null 2>&1; then
    echo "正在检查子目录配置 /etc/ssh/sshd_config.d/ ..."
    sed -i 's/^PermitOpen.*/# &/' $CONF_D 2>/dev/null
    echo "[*] 已注释子目录中的所有 PermitOpen 限制"
fi

# 5. 重启 SSH 服务
echo "[4/4] 正在重启 SSH 服务..."
systemctl restart sshd

if [ $? -eq 0 ]; then
    echo "--- 修复完成!---"
    echo "现在请重新尝试 VS Code 连接。"
else
    echo "错误:SSH 服务重启失败,请检查配置语法。"
fi

 

 

posted @ 2025-12-27 10:01  连山In17  阅读(1)  评论(0)    收藏  举报