【问题标题】:Linux: who is listening on tcp port 22?Linux:谁在监听 tcp 端口 22?
【发布时间】:2022-02-10 16:58:00
【问题描述】:

我有一块 AST2600 evb 板。开机后(连接 RJ45),它启动到 OpenBMC 内核。从串口,使用ip 命令我可以获得它的IP 地址。在我的笔记本电脑上,我可以使用 root/0penBmc 帐户 ssh 进入董事会:

bruin@gen81:/$ ssh root@192.168.6.132
root@192.168.6.132's password:

然后我想知道哪些 tcp 端口是开放的。由于没有ss/lsof/netstat实用程序,我cat /proc/net/tcp

root@AMIfa7ba648f62e:/proc/net# cat /proc/net/tcp
  sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode        
   0: 00000000:14EB 00000000:0000 0A 00000000:00000000 00:00000000 00000000   997        0 9565 1 0c202562 100 0 0 10 0
   1: 3500007F:0035 00000000:0000 0A 00000000:00000000 00:00000000 00000000   997        0 9571 1 963c8114 100 0 0 10 0

奇怪的是/proc/net/tcp中没有列出tcp端口22,这表明没有进程在监听tcp端口22。如果是这样,ssh连接是如何建立的?

顺便说一句,正如使用ps 测试的那样,处理ssh 连接的是dropbear 进程,并且dropbear 是动态生成的(即,如果没有ssh 连接,则不存在这样的进程;如果我做了两个ssh 连接,产生了两个dropbear 进程)。

PS:正如 John 在他的回复中所建议的,我将 ss 实用程序添加到图像中,它显示了我的预期:

root@AMI8287361b9c6f:~# ss -antp
State            Recv-Q            Send-Q                                  Local Address:Port                                  Peer Address:Port
LISTEN           0                 0                                             0.0.0.0:5355                                       0.0.0.0:*                 users:(("systemd-resolve",pid=239,fd=12))
LISTEN           0                 0                                           127.0.0.1:5900                                       0.0.0.0:*                 users:(("obmc-ikvm",pid=314,fd=5))
LISTEN           0                 0                                          127.0.0.53:53                                         0.0.0.0:*                 users:(("systemd-resolve",pid=239,fd=17))
LISTEN           0                 0                                                   *:443                                              *:*                 users:(("bmcweb",pid=325,fd=3),("systemd",pid=1,fd=41))
LISTEN           0                 0                                                   *:5355                                             *:*                 users:(("systemd-resolve",pid=239,fd=14))
LISTEN           0                 0                                                   *:5900                                             *:*                 users:(("obmc-ikvm",pid=314,fd=6))
LISTEN           0                 0                                                   *:22                                               *:*                 users:(("systemd",pid=1,fd=49))
LISTEN           0                 0                                                   *:2200                                             *:*                 users:(("systemd",pid=1,fd=50))
ESTAB            0                 0                               [::ffff:192.168.6.89]:22                           [::ffff:192.168.6.98]:34906             users:(("dropbear",pid=485,fd=2),("dropbear",pid=485,fd=1),("dropbear",pid=485,fd=0),("systemd",pid=1,fd=20))

【问题讨论】:

    标签: linux ssh tcp openbmc dropbear


    【解决方案1】:

    好问题。

    首先,向图像添加常用工具/实用程序非常简单。 可以通过添加一行来添加(仅用于本地测试)

    OBMC_IMAGE_EXTRA_INSTALL:append = " iproute2 iproute2-ss" 
    

    https://github.com/openbmc/openbmc/blob/master/meta-aspeed/conf/machine/evb-ast2600.conf 文件(或到您自己的测试/开发层)。添加有用的工具通常是值得的。

    其次,如果您使用的是 ipv6,则需要检查/proc/net/tcp6

    第三,您还可以通过查找应用程序的 pid ps | grep <application name> 来查找端口。然后读取该pid cat /proc/<pid>/net/tcp使用的端口

    最后,如果您还有其他问题或这些步骤不起作用。请通过 discordhttps://discord.com/invite/69Km47zH98 或电子邮件https://lists.ozlabs.org/listinfo/openbmc 与我们联系(他们是提问的首选场所)

    【讨论】:

    • 非常感谢@John。添加这两个包后,我可以使用ss -antp 看到 LISTENING 端口。我将命令的输出放在我的问题帖子的 PS 部分。我还从中学到的是,似乎侦听 ipv6 端口的进程也可以接受 ipv4 传入连接!再次感谢!
    • 顺便说一句,OBMC_IMAGE_EXTRA_INSTALL:append 在我的 OpenBmc 树中不起作用(它是带有 BB_VERSION v1.42.0 的旧树); OBMC_IMAGE_EXTRA_INSTALL_append 代替了。
    猜你喜欢
    • 1970-01-01
    • 2011-05-24
    • 1970-01-01
    • 2021-06-02
    • 1970-01-01
    • 1970-01-01
    • 2012-06-13
    • 1970-01-01
    相关资源
    最近更新 更多