我有一台使用 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 #聆听地址 :: #主机密钥 /etc/ssh/ssh_host_rsa_key #主机密钥 /etc/ssh/ssh_host_ecdsa_key #主机密钥 /etc/ssh/ssh_host_ed25519_key # 密码和密钥 #RekeyLimit 默认无 # 日志记录 #SyslogFacility 身份验证 #日志级别信息 # 验证: #LoginGraceTime 2 分钟 #PermitRootLogin 禁止密码 #StrictModes 是 #MaxAuthTries 6 #最大会话数 10 #PubkeyAuthentication 是 # 预计将来 .ssh/authorized_keys2 将默认被忽略。 #AuthorizedKeys文件 .ssh/authorized_keys .ssh/authorized_keys2 #AuthorizedPrincipalsFile 无 #AuthorizedKeysCommand 无 #AuthorizedKeysCommandUser 没人 # 为了使其工作,您还需要 /etc/ssh/ssh_known_hosts 中的主机密钥 #HostbasedAuthentication 否 # 如果不信任 ~/.ssh/known_hosts,则更改为 yes #基于主机的身份验证 #IgnoreUserKnownHosts 否 # 不要读取用户的 ~/.rhosts 和 ~/.shosts 文件 #IgnoreRhosts 是 # 要禁用隧道明文密码,请在此处更改为否! 密码验证否 #PermitEmptyPasswords 否 # 改为 yes 以启用质询-响应密码(注意 # 一些 PAM 模块和线程) KbdInteractiveAuthentication 没有 # Kerberos 选项 #KerberosAuthentication 否 #KerberosOrLocalPasswd 是 #KerberosTicketCleanup 是 #KerberosGetAFSToken 否 # GSSAPI 选项 #GSSAPIAuthentication 否 #GSSAPICleanupCredentials 是 #GSSAPIStrictAcceptorCheck 是 #GSSAPIKeyExchange 否 # 将其设置为“是”以启用 PAM 身份验证、帐户处理、 # 和会话处理。如果启用此功能,PAM 身份验证将 # 允许通过 KbdInteractiveAuthentication 和 # PasswordAuthentication。根据您的 PAM 配置, # 通过 KbdInteractiveAuthentication 进行 PAM 身份验证可能会绕过 #“PermitRootLogin without-password”的设置。 # 如果你只希望运行 PAM 帐户和会话检查,而无需 # PAM 身份验证,然后启用此功能但设置 PasswordAuthentication # 并将 KbdInteractiveAuthentication 设置为“否”。 UsePAM 是 #AllowAgentForwarding 是 #AllowTcpForwarding 是 #GatewayPorts 否 X11转发 是 #X11DisplayOffset 10 #X11UseLocalhost 是 #PermitTTY 是 PrintMotd 号码 #PrintLastLog 是 #TCPKeepAlive 是 #PermitUserEnvironment 否 #压缩延迟 #客户端存活间隔 0 #客户端存活数最大 3 #UseDNS 否 #PidFile /run/sshd.pid #MaxStartups 10:30:100 #PermitTunnel 否 #ChrootDirectory 无 #VersionAddendum 无 # 没有默认横幅路径 #横幅无 # 允许客户端传递区域环境变量 接受环境语言 LC_* # 覆盖无子系统的默认设置 子系统 sftp /usr/lib/openssh/sftp-server # 根据每个用户覆盖设置的示例 #匹配用户匿名简历 #X11转发否 # 允许TcpForwarding 否 # PermitTTY 否 # ForceCommand cvs 服务器
结果sudo iptables -L
如下:
链输入(策略接受) 目标 保护 优化 源 目标 链转发(策略接受) 目标 保护 优化 源 目标 链输出(策略接受) 目标 保护 可选 源 目标
答案1
根据您的初始问题,IPV6 路由在您的本地网络上运行良好,因此我建议您检查路由器上的防火墙\nat\port 转发配置,或许与 ISP 联系,以确定他们那边是否有任何东西阻止您通过 IPV6 进行外部连接。
答案2
rm /etc/dhcpcd.conf
我的虚拟机上也遇到了同样的 IPv6 问题,但后来了解到,小配置文件是可选的。
所有 dhcpcd 配置都可以在/etc/dhcpcd.conf文件,但对于大多数安装来说,dhcpcd 都可以开箱即用,因为现在大多数计算机都位于运行 DHCP 服务器的路由器或接入点后面。
这里的问题是“过度配置”。如果它有效,就不要让它变得过于复杂。KISS
这可能不是原贴作者的问题,但却是我的问题,而且可能不是最后一个。干杯!