如何在Docker容器中管理服务端口及SSH服务

moonjerx
2024-09-10 / 0 评论 / 38 阅读 / 正在检测是否收录...

在使用Docker容器时,了解容器内运行的服务及其占用的端口是非常重要的。本文将指导您如何列出容器内所有服务名称和占用的端口,并检查容器是否运行着OpenSSH服务。

1. 列出容器内所有服务名称和占用的端口

要找出当前容器内运行的服务及其绑定的端口,可以使用netstatss命令。

使用netstat命令

如果您容器中有安装netstat,可以使用以下命令来查找所有监听的TCP和UDP端口:

netstat -tuln

命令输出可能类似于:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:63322           0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:888             0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:8888            0.0.0.0:*               LISTEN     
tcp6       0      0 :::63322                :::*                    LISTEN  

使用ss命令

如果您的容器使用的是ss命令,可以这样操作:

ss -tuln

输出看起来与netstat类似。

2. 检查容器是否运行着OpenSSH服务

要检查容器内是否正在运行OpenSSH服务,可以使用pgrep或者ps命令加上grep来查找。

使用pgrep命令

如果您有pgrep命令,可以直接这样查询:

pgrep sshd

如果有ssh服务正在运行,它将返回一个或多个进程ID。如果没有返回任何东西,则意味着没有ssh服务正在运行。

使用ps命令结合grep

如果没有pgrep,可以使用ps命令结合grep来查找:

ps aux | grep sshd

这将显示所有包含sshd关键词的进程列表。如果没有任何输出(除了grep自身的进程),则表示没有运行OpenSSH服务。

3. 查看具体服务占用端口的情况

假设您已经知道某个端口被某个服务占用,但不确定是哪个具体服务,可以使用lsof命令来查找打开文件和IPC节点(例如网络套接字)。

lsof -i :端口号

例如,要找到占用端口63322的服务,可以这样做:

lsof -i :63322

这将会显示类似于以下的输出:

COMMAND    PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
sshd        20 root    3u  IPv4 29903991      0t0  TCP *:63322 (LISTEN)
sshd        20 root    4u  IPv6 29903993      0t0  TCP *:63322 (LISTEN)
BT-Panel   849 root   16u  IPv4 41302087      0t0  TCP localhost:53958->localhost:63322 (ESTABLISHED)
sshd     47399 root    3u  IPv4 41299442      0t0  TCP localhost:63322->localhost:53958 (ESTABLISHED)

这里可以看到sshd进程使用PID 20占用着端口63322,并且有两个监听端口的文件描述符,一个是IPv4,另一个是IPv6。

4. 永久禁用IPv6连接

如果您希望永久禁用IPv6连接,可以通过修改OpenSSH的配置文件来实现这一点。

  1. 打开sshd_config文件编辑器:

    sudo nano /etc/ssh/sshd_config
  2. 在文件中添加或修改以下行:

    # ListenAddress :: (这行可以注释掉)
    ListenAddress 0.0.0.0
  3. 保存并关闭文件。
  4. 重启OpenSSH服务使更改生效:

    sudo systemctl restart ssh

结论

通过上述步骤,您可以轻松地管理和监控Docker容器内的服务端口及SSH服务的状态。这对于保证系统的安全性和稳定性至关重要。希望本文能够帮助您更好地理解和控制您的容器环境。

0

评论 (0)

取消

您的IP: