ssh 错误-绑定到端口 22 失败:地址已被使用

ssh 错误-绑定到端口 22 失败:地址已被使用

我正在尝试启动自己的 Web 服务器。我已安装了一份全新的 ubuntu 服务器和 openSSH。

我可以使用内部 IP(192.168.1.12)顺利通过 SSH 进入服务器,但无法通过外部 IP 地址访问它。我已经设置了端口转发,但仍然收到来自 putty 的“连接被拒绝”提示。

我注意到的一件事是,如果我登录到我的网络服务器并输入,sudo /usr/sbin/sshd -d我会收到以下错误:

debug1: Bind to port 22 pm 0.0.0.0
Bind to port 22 on 0.0.0.0 failed: Address already in use.
debug1: Bind to port 22 on ::.
Bind to port 22 on :: failed: Address already in use.

我猜这就是我尝试使用外部地址进行 ssh 时出现问题的原因?我尝试禁用 ipv6,但这样做只能修复一个错误

编辑: netstat -tan | grep LIST给出以下结果

tcp    0    0 0.0.0.0:22      0.0.0.0:*      LISTEN
tcp6   0    0 :::22           :::*           LISTEN

netstat -tulpn

Proto Recv-Q  Send-Q   Local Address       Foreign Address      State    PID/Program name
tcp     0       0      0.0.0.0:22            0.0.0.0:*          LISTEN     620/sshd
tcp6    0       0      :::22                 :::*               LISTEN     620/sshd
udp     0       0      0.0.0.0:68            0.0.0.0:*                     604/dhclient3

答案1

sshd 已在运行,netstat 可证明这一点。它还绑定到所有 IP(netstat 中的 0.0.0.0),因此应该没有问题。

您的路由器上有防火墙吗?您可能启用了端口转发,但防火墙可能仍在丢弃 22。您的 ISP 也可能在 22 到达您之前就阻止了它。我还会执行 iptables -F(丢弃所有 iptables 规则)以确保万无一失;它们会在重启时恢复(或者您可以使用 iptables-restore 恢复它们)。

您可以通过检查被拒绝的连接来确认 sshd 没有拒绝连接/var/log/auth.log

如果您确认日志中没有被拒绝的连接,并且路由器上没有防火墙,那么我建议将 SSH 更改为使用 22 以外的端口(随机高端口 > 1024)。您可以通过编辑/etc/ssh/ssh_config并将“端口 22”更改为更高的端口来实现这一点。

编辑:从评论中更新以保存阅读;在这种情况下,您还应该尝试从网络外部的 IP 进行检查。在这种情况下,ISP 阻止了端口 22,并且内部连接到高端口(指定外部 IP)不起作用,可能是由于缺少发夹 NAT。

答案2

地址已在使用中通常意味着某些服务已在相关端口(即 22)上运行?您是否检查过监听服务?您可以转储吗?

netstat -tan | grep LIST

相关内容