尝试 ssh 进入 IPv6 地址,收到“没有到主机的路由”

Tra*_*net 5 networking ssh openssh ipv6 ubuntu

我有一台使用 Ubuntu 22.04 的家用计算机,我可能会通过互联网远程 SSH 进入该计算机。我正在尝试通过其公共 IPv6 地址来实现此目的。该地址不以 开头fe80::,因此它不是链接本地地址。这是我正在使用的命令:

ssh <username>@<ipv6 address>

但是,它给了我这个错误:ssh: connect to host <ipv6 address> port 22: No route to host

我可以使用上述命令从同一网络上的另一台设备通过 SSH 连接到这台机器,但不能从互联网连接。

我也尝试了这些变体,都给出了相同的No route to host错误:

ssh -6 <username>@<ipv6 address>

ssh <username>@<ipv6 address>%eno1

可能出了什么问题?

Ubuntu 的ufw防火墙被禁用。另外,这就是我的/etc/ssh/sshd_config样子:

# 这是 sshd 服务器系统范围的配置文件。看
# sshd_config(5) 了解更多信息。

# 这个 sshd 是用 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games 编译的

# 用于默认 sshd_config 中选项的策略
# OpenSSH 是指定选项及其默认值,其中
# 可能,但请留下评论。未注释的选项会覆盖
# 默认值。

包含/etc/ssh/sshd_config.d/*.conf

#端口22
#AddressFamily 任意
#监听地址0.0.0.0
#监听地址::

#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#主机密钥 /etc/ssh/ssh_host_ed25519_key

# 密码和密钥
#RekeyLimit 默认无

# 日志记录
#SyslogFacility AUTH
#LogLevel 信息

# 验证:

#LoginGraceTime 2m
#PermitRootLogin 禁止密码
#StrictModes 是的
#MaxAuthTries 6
#最大会话数 10

#PubkeyAuthentication 是

# 预计 .ssh/authorized_keys2 将来会被默认忽略。
#AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2

#AuthorizedPrincipalsFile 无

#AuthorizedKeysCommand 无
#AuthorizedKeysCommandUser 无人

# 为此,您还需要 /etc/ssh/ssh_known_hosts 中的主机密钥
#HostbasedAuthentication 否
# 如果您不信任 ~/.ssh/known_hosts 则更改为 yes
# 基于主机的身份验证
#IgnoreUserKnownHosts 否
# 不读取用户的~/.rhosts和~/.shosts文件
#IgnoreRhosts 是的

# 要禁用隧道明文密码,请在此处更改为 no!
密码验证 否
#PermitEmptyPasswords 否

# 更改为 yes 以启用质询响应密码(注意以下问题
# 一些 PAM 模块和线程)
KbdInteractiveAuthentication 否

# Kerberos 选项
#KerberosAuthentication 否
#KerberosOrLocalPasswd 是
#KerberosTicketCleanup 是
#KerberosGetAFSToken 否

# GSSAPI 选项
#GSSAPI身份验证 否
#GSSAPICleanupCredentials 是
#GSSAPIStrictAcceptor检查是
#GSSAPIKeyExchange 否

# 将其设置为“yes”以启用 PAM 身份验证、帐户处理、
# 和会话处理。如果启用此功能,PAM 身份验证将
# 允许通过 KbdInteractiveAuthentication 并且
# 密码验证。根据您的 PAM 配置,
# 通过 KbdInteractiveAuthentication 进行的 PAM 身份验证可能会绕过
# “PermitRootLogin without-password”的设置。
# 如果您只想运行 PAM 帐户和会话检查而无需
# PAM身份验证,然后启用它但设置PasswordAuthentication
# 并将 KbdInteractiveAuthentication 设置为“否”。
使用PAM 是

#AllowAgentForwarding 是
#AllowTcpForwarding 是
#GatewayPorts 否
X11转发 是
#X11显示偏移 10
#X11UseLocalhost 是
#PermitTTY 是的
打印型号
#PrintLastLog 是
#TCPKeepAlive 是的
#PermitUserEnvironment 否
#压缩延迟
#ClientAliveInterval 0
#ClientAliveCountMax 3
#使用DNS 否
#PidFile /run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel 否
#ChrootDirectory 无
#VersionAddendum 无

# 无默认横幅路径
#横幅无

# 允许客户端传递区域设置环境变量
AcceptEnv LANG LC_*

# 覆盖没有子系统的默认值
子系统 sftp /usr/lib/openssh/sftp-server

# 基于每个用户的覆盖设置示例
#匹配用户 anoncvs
# X11转发否
# 允许Tcp转发 否
# 允许TTY 否
# ForceCommand cvs 服务器

这就是结果sudo iptables -L

链输入(策略接受)
目标 prot 选择源目的地         

链转发(策略接受)
目标 prot 选择源目的地         

链输出(策略接受)
目标 prot 选择源目的地

小智 0

根据您最初的问题,IPV6 路由在您的本地网络上工作正常,因此我建议您检查路由器上的防火墙\nat\端口转发配置,并可能与 ISP 联系,以确定其上是否有任何内容阻止您通过 IPV6 进行外部连接的一侧。