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

Rog*_*ton 5 ssh

我正在尝试启动我自己的 Web 服务器。我已经安装了 ubuntu 服务器和 openSSH 的新副本。

我可以通过使用内部 IP (192.168.1.12) SSH 进入服务器,但无法通过我的外部 IP 地址访问它。我已经设置了端口转发,但仍然从腻子中得到“连接被拒绝”。

我注意到的一件事是,如果我登录到我的 Web 服务器并键入,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.
Run Code Online (Sandbox Code Playgroud)

我猜这是我尝试使用外部地址 ssh 时出现问题的原因?我已尝试禁用 ipv6,但执行此操作时仅修复了其中一个错误

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

tcp    0    0 0.0.0.0:22      0.0.0.0:*      LISTEN
tcp6   0    0 :::22           :::*           LISTEN
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

Jos*_*ins 8

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。