我有一台可以通过 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
一些额外的信息:
- 我的笔记本电脑运行的是 Arch Linux,而我的服务器是 Ubuntu Server 10.10
- 服务器上的 sshd -V 显示
OpenSSH_5.5p1 Debian-4ubuntu5, OpenSSL 0.9.8o 01 Jun 2010
- 我的笔记本电脑上的 ssh -V 显示
OpenSSH_5.8p2, OpenSSL 1.0.0d 8 Feb 2011
- 我的笔记本电脑上的 ssh -6 ::1 正常。
- ping6 PUBLIC_V6_IP 正常。
- 服务器上的 ssh -6 ::1 -p 311 正常。
- 服务器上的 ssh -6 PUBLIC_V6_IP -p 311 也可以。
问:有人知道发生了什么事吗?
答案1
可能的原因有:
本地防火墙 (
ip6tables
)网络上的外部防火墙(根据一些来源,ICMPv6“管理禁止”错误消息被 Linux 解释为 EACCESS)
AppArmor、SELinux、Smack(尽管 Arch 上默认没有启用它们)
您可以尝试以下方法:
重置 ip6tables 规则
使用其他程序连接到服务器 (
socat stdio tcp:[2604:....]:311
),查看它们是否返回相同的消息;使用相同和不同的端口进行测试ping6
,,traceroute6
并查看是否有任何跳转返回“管理禁止”或任何其他错误