背景
在 mac 上修改过 SSH 端口后,需要确认当前 SSH 实际监听的端口,以及配置文件中是否生效,避免误判或锁死远程连接。
排查步骤
一、查看 SSH 当前监听端口
使用 lsof 查看系统中正在监听的 TCP 端口:
sudo lsof -iTCP -sTCP:LISTEN | grep ssh
示例输出:
launchd 1 root 7u IPv6 TCP *:ssh (LISTEN)
launchd 1 root 8u IPv4 TCP *:ssh (LISTEN)
说明:
*:ssh表示监听的是服务名sshssh在/etc/services中对应端口22- 当前 SSH 实际仍在监听 22 端口
该步骤反映的是 当前生效状态,优先级最高。
二、查看 SSH 服务端配置端口
查看 sshd 配置文件中的端口设置:
grep -n "^Port" /etc/ssh/sshd_config
可能结果:
- 无输出:使用默认端口 22
- 输出如:
17:Port 25422
表示配置文件中指定了监听端口为 25422。
注意事项:
- 被
#注释的Port行不生效 - 可以存在多行
Port,SSH 会监听多个端口
三、结论判断逻辑
-
lsof显示端口为 22,sshd_config未配置PortSSH 使用默认端口 -
sshd_config已配置新端口,lsof仍显示 22 配置未加载,需要重启 sshd -
lsof显示新端口 修改已生效
总结
排查 SSH 端口时,先看监听状态,再看配置文件。
lsof 用来确认事实,sshd_config 用来确认意图。
两者对齐,端口状态才可信。