可以使用 ssh 的详细模式(-v)测试远程服务器上的某个端口,以替代 telnet,不过需要注意:
-
ssh本身不是专门用来直接测试端口是否开放的工具,但可以通过一些间接方式验证端口可用性。 - 以下是使用
ssh -v -p测试端口是否可达的两种常用方法。
方法 1:尝试连接到目标端口
如果目标服务器上启用了 SSH 服务并监听指定的端口,可以直接尝试连接:
ssh -v -p <端口号> user@hostname示例:
ssh -v -p 2222 user@192.168.1.1- 输出结果分析:
- 如果端口开放但未运行 SSH 服务,会提示协议错误:
ssh_exchange_identification: Connection closed by remote host- 如果端口被防火墙阻挡或未开放,调试信息中会看到类似以下内容:
connect to address 192.168.1.1 port 2222: Connection refused- 或
connect to address 192.168.1.1 port 2222: No route to host方法 2:使用 ssh 的超时选项测试非 SSH 端口
对于非 SSH 服务的端口(如 HTTP、数据库等),可以使用 -o 配置超时,快速检查端口是否开放:
ssh -v -o "ConnectTimeout=5" -p <端口号> user@hostname示例:
ssh -v -o "ConnectTimeout=5" -p 80 user@192.168.1.1- 效果:
- 如果端口开放但未运行 SSH 服务,会提示协议错误:
ssh_exchange_identification: Connection closed by remote host- 如果端口被阻挡或关闭,会显示:
connect to address 192.168.1.1 port 80: Connection refused方法 3:结合 nc (推荐补充)
如果目标并非 SSH 服务端口,建议直接使用 netcat (nc),更简单有效:
nc -zv hostname <端口号>示例:
nc -zv 192.168.1.1 80- 输出会直接告诉你端口状态:
- 成功:
Connection to 192.168.1.1 80 port [tcp/http] succeeded!Ncat: 0 bytes sent, 0 bytes received in 0.03 seconds. - 失败:
Ncat: Version 7.50 ( https://nmap.org/ncat )Connection refused
注意事项
- 权限要求:
-
ssh测试时需要目标服务器允许建立连接,但不需要实际登录。 - 对于非 SSH 服务,
ssh仅能检查端口是否可达,不能验证服务状态。
- 防火墙和网络限制:
- 如果有防火墙规则或网络路由限制,端口测试可能失败,但并不一定表示服务不可用。
- 替代工具:
- 如果是专门测试端口连通性,推荐使用
nc或telnet,它们更适合这个场景。










