java.net.ConnectException: Connection refused: connect

avatar
作者
猴君
阅读量:0

这个异常通常表示客户端尝试连接到服务器,但服务器拒绝了连接请求。主要原因可能包括:

  1. 服务器未运行或未启动服务: 如果您正在尝试连接到的服务器未运行或未启动相关的服务,就会导致连接被拒绝。

  2. 防火墙问题: 防火墙设置可能会阻止对特定端口的连接。您需要确保服务器上所需的端口未被防火墙屏蔽。sudo ufw status

  3. 错误的主机或端口: 确保您尝试连接的主机名或 IP 地址以及端口号是正确的。

  1. 要查看 Ubuntu 服务器上正在运行的端口,您可以使用一些命令来列出当前打开的网络连接或正在监听的端口。以下是几种常用的方法:

  • netstat 命令:使用 netstat 命令可以列出当前系统上所有的网络连接、路由表信息以及网络接口统计信息。您可以使用以下命令来列出所有正在监听的端口:
  1.  

    bashCopy code

    sudo netstat -tuln

    这将显示所有正在监听的 TCP (-t) 和 UDP (-u) 端口,以及端口号、协议和监听地址。

  2. ss 命令:

    ssnetstat 的替代工具,更加强大和高效。您可以使用以下命令来列出所有正在监听的端口:

     

    bashCopy code

    sudo ss -tuln

    这与上面的 netstat 命令类似,会列出所有正在监听的 TCP (-t) 和 UDP (-u) 端口。

  3. lsof 命令:

    lsof 命令可以列出打开的文件和网络连接。您可以使用以下命令来查看哪些进程在监听哪些端口:

     

    bashCopy code

    sudo lsof -i -P -n

    这将显示所有打开的网络连接,包括进程的 PID、监听地址和端口号。

  4. 并发连接限制: 某些服务器可能限制了同时处理的连接数,当达到限制时会拒绝新的连接请求。

检查服务器上特定端口是否正确打开并监听连接,您可以使用以下方法:

  1. 使用 telnet: telnet 是一种常用的网络调试工具,可以用来测试网络连接。您可以使用以下命令来尝试连接到服务器的特定端口:

     

    bashCopy code

    telnet server_ip port

    其中 server_ip 是服务器的 IP 地址,port 是要测试的端口号。如果连接成功,将会看到一条成功的提示消息;否则,可能会显示连接失败的消息。

  2. 使用 nc(netcat): nc 是另一个网络工具,可以用来在网络上传输数据。您可以使用以下命令来检查服务器上的端口是否打开:

     

    bashCopy code

    nc -zv server_ip port

    这个命令会尝试连接到服务器的特定端口,但不会发送任何数据。如果端口打开并监听连接,将会输出类似于 Connection to server_ip port succeeded! 的成功消息;否则,将会显示连接失败的消息。

  3. 使用 nmap: nmap 是一个网络扫描工具,可以用来扫描远程主机的端口状态。您可以使用以下命令来扫描服务器的端口状态:

     

    bashCopy code

    sudo nmap -p port server_ip

    其中 port 是要扫描的端口号,server_ip 是服务器的 IP 地址。nmap 将会显示该端口的状态,包括是否开放、关闭或过滤。

通过以上方法,您可以检查服务器上特定端口的状态,以确保它是否正确打开并监听

要使用 FinalShell 连接到本地的 Ubuntu,您需要确保已经安装了 SSH 服务器并且已经启动。默认情况下,大多数 Ubuntu 安装都包含 OpenSSH 服务器,但如果您的系统没有安装,您可以使用以下命令安装它:

 

bashCopy code

sudo apt update sudo apt install openssh-server

安装完成后,您需要启动 SSH 服务器。如果它已经在运行,则无需执行任何其他操作。您可以使用以下命令来检查 SSH 服务器的状态:

 

bashCopy code

sudo service ssh status

如果 SSH 服务器未运行,您可以使用以下命令启动它:

 

bashCopy code

sudo service ssh start

一旦 SSH 服务器正在运行,您就可以使用 FinalShell 连接到您的本地 Ubuntu。打开 FinalShell,点击“新会话”,然后输入您的本地 Ubuntu 的 IP 地址、用户名和密码,并选择 SSH 协议。点击“连接”即可连接到您的本地 Ubuntu。默认情况下,SSH 使用的端口号是 22,如果您更改了 SSH 服务器的端口号,您需要在 FinalShell 中相应地更改端口号。

连接成功后,您应该可以在 FinalShell 中远程管理您的本地 Ubuntu 了。

要查看本地 Ubuntu 的 IP 地址,可以使用以下命令:

 

bashCopy code

ip addr show

这将显示本地 Ubuntu 上所有网络接口的配置信息,包括每个接口的 IP 地址。通常来说,您会在 inetinet6 行找到 IP 地址,IPv4 地址通常显示为以 192.168.x.x10.x.x.x172.x.x.x 开头的地址。

要查看本地 Ubuntu 的用户名,您可以在终端中执行以下命令:

 

bashCopy code

whoami

这将显示当前登录用户的用户名。

要查看本地 Ubuntu 的密码,您必须知道该用户的密码。如果您是系统管理员或具有 sudo 权限的用户,您可以更改用户的密码。例如,要更改当前用户的密码,可以执行以下命令:

 

bashCopy code

passwd

然后按照提示输入新密码即可。如果您不是管理员或没有 sudo 权限,并且忘记了密码,您可能需要重置密码或者联系管理员来帮助您重置密码。

综上所述,通过上述命令,您可以查看本地 Ubuntu 的 IP 地址和用户名,但是要查看密码,您需要知道或者重置密码。

检查目标服务器上特定端口是否正确打开并监听连接:

  1. telnet 命令:

    使用 telnet 命令可以尝试连接到目标服务器的特定端口。如果连接成功,表示端口是打开的并且服务器正在监听连接。如果连接失败,则可能是端口未打开或服务器未启动服务。例如,要检查服务器上的端口 80 是否打开,您可以执行以下命令:

     

    Copy code

    telnet server_ip 80

    其中 server_ip 是目标服务器的 IP 地址,80 是要检查的端口号。

  2. nc(netcat)命令:

    使用 nc 命令可以在网络上传输数据,并且可以用来检查服务器上的端口是否打开。如果端口打开并监听连接,nc 命令会成功连接到服务器。例如,要检查服务器上的端口 22 是否打开,您可以执行以下命令:

     

    Copy code

    nc -zv server_ip 22

    其中 server_ip 是目标服务器的 IP 地址,22 是要检查的端口号。

  3. nmap 命令:

    使用 nmap 命令可以扫描目标服务器上的端口状态。它会显示每个端口的状态,包括是否开放、关闭或过滤。例如,要扫描服务器上的所有端口,您可以执行以下命令:

     

    cssCopy code

    sudo nmap -p- server_ip

    其中 server_ip 是目标服务器的 IP 地址。 -p- 表示扫描所有端口。

通过以上方法,您可以检查目标服务器上特定端口是否正确打开并监听连接。

要检查 SSH 服务器的配置,您可以查看 SSH 配置文件,并检查其中的参数设置。在大多数 Linux 发行版中,SSH 服务器的配置文件通常是 /etc/ssh/sshd_config。您可以使用文本编辑器打开该文件,并查看其中的配置。

以下是一些常见的配置选项,您可以在配置文件中找到并检查它们:

  1. 端口号: 默认情况下,SSH 服务器使用端口 22。您可以在配置文件中找到 Port 参数,并检查是否设置了正确的端口号。

  2. 允许的用户: 您可以使用 AllowUsers 参数指定允许连接到 SSH 服务器的用户列表。检查这个参数,确保只有合适的用户被允许连接。

  3. 身份验证方式: SSH 支持多种身份验证方式,包括密码、公钥和证书等。检查 PasswordAuthenticationPubkeyAuthentication 参数,确保所需的身份验证方式已启用。

  4. 允许的 IP 地址: 使用 AllowTcpForwardingGatewayPortsPermitRootLogin 等参数可以控制允许的 IP 地址和连接方式。确保这些参数设置为您期望的方式。

  5. 会话超时和限制: 您可以使用 ClientAliveIntervalClientAliveCountMax 参数设置会话超时和限制。这有助于防止空闲连接占用服务器资源。

  6. 日志记录: 确保日志记录级别设置正确,以便适当地记录 SSH 服务器活动。您可以使用 LogLevel 参数来设置日志级别。

  7. 其他安全设置: 检查其他安全相关的参数,如 HostKeyProtocolPermitEmptyPasswords 等,以确保服务器的安全性。

检查配置文件后,确保做出任何必要的更改,并重新加载 SSH 服务器以使更改生效。您可以使用以下命令重新加载 SSH 服务器配置:

 

bashCopy code

sudo systemctl reload sshd

或者,如果您使用的是旧版的 Ubuntu 或者其他类似的系统,您可以使用以下命令:

 

bashCopy code

sudo service ssh restart

重新加载或重启 SSH 服务器后,检查是否有任何错误消息,并确保服务器正常工作。

发现 /etc/ssh/sshd_config 文件为空,这可能表示 SSH 服务器配置文件丢失或损坏。SSH 服务器(sshd)通常使用此文件来配置其行为。缺少配置文件可能会导致 SSH 服务器无法正常工作。我的问题-》sudo apt-get install --reinstall openssh-server;sudo systemctl reload sshd

在这种情况下,您可以尝试通过以下方法解决问题:

  1. 恢复备份文件: 如果您曾经备份过 /etc/ssh/sshd_config 文件,可以尝试将备份文件恢复到该位置。

  2. 重新安装 SSH 服务器: 如果您无法找到原始的 sshd_config 文件,可以尝试重新安装 SSH 服务器软件包,以恢复默认的配置文件。您可以使用以下命令重新安装 OpenSSH 服务器:

    sudo apt-get install --reinstall openssh-server 

    或者,如果您使用的是其他 Linux 发行版,请使用相应的软件包管理器来重新安装 SSH 服务器。

  3. 手动创建配置文件: 如果您无法找到备份文件,并且重新安装也无法解决问题,您可以尝试手动创建 sshd_config 文件。您可以从 SSH 文档或者其他来源获取默认的配置模板,并手动创建并编辑 /etc/ssh/sshd_config 文件。

  4. 检查其他位置: 在某些情况下,SSH 配置文件可能存储在其他位置,而不是 /etc/ssh/sshd_config。您可以尝试在系统中搜索其他可能的 SSH 配置文件,并查看它们是否存在。

无论您选择哪种方法,确保在修改或恢复配置文件后重新加载 SSH 服务器以使更改生效。您可以使用以下命令重新加载 SSH 服务器配置:

sudo systemctl reload sshd

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!