如何在Linux系统中查看SSH服务当前监听的端口号
SSH(Secure Shell)是Linux系统中最常用的远程连接协议之一。默认情况下,SSH服务监听在TCP 22号端口上。然而,在实际生产环境中,出于安全加固或网络策略考虑,管理员通常会修改该端口。
虽然可以通过查看配置文件 /etc/ssh/sshd_config 中的 Port 指令来获取设定值,但为了确认SSH服务当前是否确实绑定并监听了指定端口,我们需要借助一些命令行工具进行实时验证。
1. 查看SSH配置文件中的设定端口
首先,我们可以通过查看SSH服务器的配置文件来了解其预期监听的端口号:
grep 'Port' /etc/ssh/sshd_config
输出示例如下:
#Port 22
Port 2222
若输出为 Port 2222,则表示SSH服务配置为监听2222端口。若未显式定义 Port 或被注释,则默认使用22端口。
2. 使用 netstat 查看当前监听的端口
netstat 是一个传统的网络状态工具,可用于显示活动的网络连接、路由表、接口统计等信息。
要查看SSH服务监听的端口,可以执行:
sudo netstat -tulnp | grep sshd
输出示例:
tcp6 0 0 :::2222 :::* LISTEN 1234/sshd
-t:显示TCP连接;-u:显示UDP连接;-l:仅显示监听状态的套接字;-n:不解析服务名称,直接显示端口号;-p:显示进程ID和名称。
3. 使用 ss 工具替代 netstat
ss(Socket Statistics)是一个更现代且高效的工具,功能与 netstat 类似,但性能更优,推荐用于新版本Linux系统。
查看SSH服务监听的端口:
sudo ss -tulnp | grep sshd
输出示例:
tcp LISTEN 0 128 *:2222 *:* users:(("sshd",pid=1234,fd=8))
字段 *:2222 表示SSH服务正在监听2222端口。
4. 使用 lsof 查看SSH服务绑定的端口
lsof(List Open Files)不仅可以查看打开的文件,还能查看网络连接。
运行以下命令查看SSH服务监听的端口:
sudo lsof -i :22 -i :2222 -i TCP | grep sshd
输出示例:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1234 root 8u IPv6 12345 0t0 TCP *:2222 (LISTEN)
如果不确定端口号,也可以查找所有 sshd 相关的连接。
5. 不同Linux发行版是否存在差异?
发行版常用工具备注CentOS 7+ss、firewalld默认不安装 netstat,需安装 net-tools 包Ubuntu 20.04+ss、ufw已内置 ss,可选装 netstatDebian 10+ss、iptables支持多种网络管理工具Arch Linuxss、systemd-networkd强调简洁性,工具齐全但默认不预装图形界面
尽管不同发行版的默认安装包略有不同,但核心命令如 ss 和 lsof 几乎都可用。建议统一使用 ss 进行端口检查,因其跨平台兼容性好且效率高。
6. 验证SSH服务是否正常响应
除了查看监听端口外,还可以通过本地测试连接来验证SSH服务是否正常工作:
ssh -v -p 2222 user@localhost
输出将包含详细的调试信息,帮助判断问题是否出在端口配置或防火墙限制。
7. 流程图总结操作步骤
graph TD
A[开始] --> B{是否修改过SSH端口?}
B -- 是 --> C[查看/etc/ssh/sshd_config]
C --> D[获取Port配置]
D --> E[使用netstat/ss/lsof验证]
E --> F[确认监听端口]
B -- 否 --> G[直接使用netstat/ss/lsof验证]
G --> F
F --> H[结束]