我正在运行ss -lnp | grep sshd
并收到以下输出(除了我期望的 LISTEN 端口之外。不确定这是什么):
u_dgr UNCONN 0 0 *78056 *12438 users:(("sshd",pid=22409, fd=4), ("sshd",pid=22337,fd=4)
提前感谢您帮助我解读这一点。
答案1
我尝试着去弄清楚。以下是我的笔记:
u_dgr = u 代表 UDS(Unix 域套接字)。“在同一服务器上运行的程序也可以使用 Unix 域套接字 (UDS) 相互通信。Unix 域套接字可以基于流,也可以基于数据报。使用域套接字时,程序之间通过主机文件系统上的文件直接在操作系统内核中交换数据。要使用域套接字发送或接收数据,程序需要读取和写入其共享套接字文件,从而完全绕过基于网络的套接字和协议”(源码)。dgr 代表数据报。数据报与代表流的 str 相反。对于 IP 协议来说,dgr 类似于 UDP,str 类似于 TCP。
UNCONN = 未连接。与 Closed 相同。数据报协议是无状态的,因此 ss 始终将此类连接显示为 UNCONN。
0 0 代表 recv-q 和 send-q。显示队列中有多少字节。0 表示队列中没有字节。
*78056 *12438 表示在“用户:”中提到的程序使用任意地址和端口 78056 将数据发送到远程端口 12438 和任意地址。sshd 程序使用端口 78056 将日志发送到 systemd。日志被发送到端口 12438。如果你这样做,ss -lxnp | grep 12438
你会看到 systemd 在 12438 上监听。
pidusers:(("sshd",pid=22409, fd=4), ("sshd",pid=22337,fd=4)
表示进程 ID。fd 表示文件描述符。您可以使用以下命令进行检查ls -lh /proc/22409/fd/