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

我正试图让我自己的networking服务器启动。 我已经安装了一个新的Ubuntu服务器和openSSH的副本。

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

我注意到的一件事是,如果我login到我的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. 

我猜这是我的问题试图使用我的外部地址ssh的原因? 我试图禁用ipv6,但只有一个错误是固定的,当我这样做

编辑: netstat -tan | grep LIST 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 

sshd已经在运行了,如你的netstat所certificate的那样。 它也绑定到所有IP(netstat中的0.0.0.0),所以在那里应该没有问题。

你的路由器上有防火墙吗? 您可能启用了端口转发function,但是防火墙可能仍然会丢弃端口转发function。也有可能您的ISP在连接到您之前阻止了22。 我也会做一个iptables -F(放下所有的iptables规则)来确定; 他们会在重新启动时返回(或者您可以使用iptables-restore来恢复它们)。

您可以通过检查/var/log/auth.log确认sshd不拒绝连接。

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

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

已经使用的地址通常意味着一些服务已经在问题的端口上运行,即, 22? 你有没有检查监听服务? 你可以倾倒吗?

 netstat -tan | grep LIST