通过 IPv6 进行 SSH 时出现“权限被拒绝”错误

通过 IPv6 进行 SSH 时出现“权限被拒绝”错误

我有一台可以通过 IPv4 地址通过 SSH 连接的服务器。现在我想通过 IPv6 进行 SSH。

我确定我的服务器已分配了有效的 IPv6 地址,并且已将 sshd 配置为监听 v6 地址(我将其设置为[::]:311),但当我在笔记本电脑上运行时

ssh -v -6 -p 311 PUBLIC_V6_IP -l same_user_as_v4 -i ~/.ssh/id_rsa

我得到了以下输出:

OpenSSH_5.8p2, OpenSSL 1.0.0d 8 Feb 2011
debug1: Reading configuration data /home/winus/.ssh/config
debug1: Applying options for *
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to PUBLIC_V6_IP [PUBLIC_V6_IP] port 311.
debug1: connect to address PUBLIC_V6_IP port 311: Permission denied
ssh: connect to host PUBLIC_V6_IP port 311: Permission denied

一些额外的信息:

  1. 我的笔记本电脑运行的是 Arch Linux,而我的服务器是 Ubuntu Server 10.10
  2. 服务器上的 sshd -V 显示OpenSSH_5.5p1 Debian-4ubuntu5, OpenSSL 0.9.8o 01 Jun 2010
  3. 我的笔记本电脑上的 ssh -V 显示OpenSSH_5.8p2, OpenSSL 1.0.0d 8 Feb 2011
  4. 我的笔记本电脑上的 ssh -6 ::1 正常。
  5. ping6 PUBLIC_V6_IP 正常。
  6. 服务器上的 ssh -6 ::1 -p 311 正常。
  7. 服务器上的 ssh -6 PUBLIC_V6_IP -p 311 也可以。

问:有人知道发生了什么事吗?

答案1

可能的原因有:

  • 本地防火墙 ( ip6tables)

  • 网络上的外部防火墙(根据一些来源,ICMPv6“管理禁止”错误消息被 Linux 解释为 EACCESS)

  • AppArmor、SELinux、Smack(尽管 Arch 上默认没有启用它们)

您可以尝试以下方法:

  • 重置 ip6tables 规则

  • 使用其他程序连接到服务器 ( socat stdio tcp:[2604:....]:311),查看它们是否返回相同的消息;使用相同和不同的端口进行测试

  • ping6,,traceroute6并查看是否有任何跳转返回“管理禁止”或任何其他错误

相关内容