如何在 Ubuntu 中打开一个关闭的端口?

Kul*_*gar 2 server iptables firewall networking 14.04

我试图杀死在端口 8080 上运行的进程并将其用于远程调试目的。

我的源代码在我的主机上,编译的 jar 在另一个 Ubuntu 服务器中。因此,我试图在端口 8080 上进行远程调试,我更改了IntelliJ配置中的必要参数以继续进行远程调试,并尝试从服务器机器运行 jar:

java -jar -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8080 hdfstohive-1.0-SNAPSHOT-jar-with-dependencies.jar
Run Code Online (Sandbox Code Playgroud)

因为我杀了这是我的服务器上运行的进程,现在我不能看到的时候我做了端口被打开nmap serverip,并netstat -atun为好。

因此,我尝试将其添加到防火墙 ( sudo ufw allow 8080/tcp) 规则和 iptable ( sudo iptables -I INPUT -p tcp -s 0.0.0.0/0 --dport 8080 -j ACCEPT) 中,但仍然看不到正在打开的端口。我也试过禁用防火墙,但仍然没有运气。

所以我需要的是,打开该端口,以便我可以从我的主机进行远程调试。我确信我错过了我已经完成的工作中的一些重要内容。

我正在走向垮台吗?任何帮助将不胜感激。

L. *_*mes 10

在 Ubuntu 上,除非您有防火墙或应用程序阻止它,否则所有端口都会打开。在正常情况下,端口上运行的应用程序是为了LISTENING。这样它就可以从端口接收。

端口的阻塞关闭使用对防火墙块的引用。

因此,如果您的防火墙没有阻止该端口,则它已打开。

当有程序在端口上运行和侦听时,通常认为该端口已打开。您可以使用此命令(以及许多其他命令)判断哪些端口正在运行程序(LISTENING):

$ netstat -tulnp | grep "LISTEN"
Run Code Online (Sandbox Code Playgroud)

您可以使用此命令确定哪个应用程序正在使用该端口(在这种情况下检查端口 80):

$ sudo lsof -i tcp:80
Run Code Online (Sandbox Code Playgroud)

端口开放

你提到你杀死了在你的服务器机器上运行的进程,现在无法看到正在打开的端口。你看不到它被打开,因为它上面没有任何东西在运行。

您可以通过在其上运行netcat来测试有问题的端口。Netcat 是一个用于 TCP 和 UDP 连接和侦听的实用程序。

在你的端口上运行这个:

$ netcat -l 1234
Run Code Online (Sandbox Code Playgroud)

然后从另一台计算机运行以下命令:

$ telnet serverIP 1234
Trying 192.168.15.81...
Connected to ubunzeus.apollo3.com.
Escape character is '^]'.
this is a test
Run Code Online (Sandbox Code Playgroud)

您会注意到“这是一个测试”文本将出现在您的服务器控制台上。这是一种测试端口的方法。测试后可以在服务器上点击Ctrl+C取消申请。

希望这有助于澄清您的端口上发生的事情。