菜鸟科技网

ssh搜索命令有哪些常用选项?

搜索什么?

  1. 搜索服务器/主机:在局域网或特定 IP 范围内,寻找正在运行 SSH 服务的机器。
  2. 搜索历史命令:在你自己电脑的命令历史记录中,查找过去使用过的 SSH 命令。
  3. 搜索配置文件:在 ~/.ssh/config 文件中,查找特定的 SSH 主机配置。
  4. 搜索日志文件:在服务器的 /var/log/auth.log (Debian/Ubuntu) 或 /var/log/secure (CentOS/RHEL) 中,查找 SSH 登录成功或失败的记录。

搜索网络中的 SSH 服务器

如果你想在一个局域网或 IP 范围内找到哪些机器开启了 SSH 服务(通常是 22 端口)。

ssh搜索命令有哪些常用选项?-图1
(图片来源网络,侵删)

使用 nmap (最强大、最推荐)

nmap 是网络扫描的“瑞士军刀”,功能非常强大。

基本命令: 扫描整个本地 /24 网段,查找开放了 22 端口的设备。

nmap -p 22 192.168.1.0/24

更详细的命令: 显示开放端口的设备的主机名和服务版本信息。

nmap -p 22 --open -sV 192.168.1.0/24
  • -p 22: 指定扫描端口为 22。
  • --open: 只显示端口状态为 "open" 的主机。
  • -sV: 尝试确定端口上服务的版本信息。

示例输出:

ssh搜索命令有哪些常用选项?-图2
(图片来源网络,侵删)
Starting Nmap 7.92 ( https://nmap.org ) at 2025-10-27 10:30 CST
Nmap scan report for 192.168.1.10
Host is up (0.0020s latency).
PORT   STATE SERVICE
22/tcp open  ssh
MAC Address: 00:11:22:AA:BB:CC (D-Link International)
Nmap scan report for 192.168.1.15
Host is up (0.0015s latency).
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.2p1
MAC Address: 10:20:30:DD:EE:FF (Apple, Inc.)

从输出中可以看到,168.1.10168.1.15 都开启了 SSH 服务。

使用 netcat (nc)

如果系统没有 nmap,可以使用 netcat 进行简单的端口探测。

# 扫描单个IP
nc -zvw3 192.168.1.10 22
# 扫描一个IP范围 (需要配合 for 循环)
for ip in {1..254}; do
  nc -zvw3 192.168.1.$ip 22 && echo "Found SSH on 192.168.1.$ip"
done
  • -z: 扫描模式,不发送数据。
  • -v: 详细模式。
  • -w3: 设置超时时间为 3 秒。

搜索本地的 SSH 历史命令

如果你想快速回忆过去连接过哪个服务器,或者复制一个旧的 SSH 命令。

使用 history 命令

直接查看命令历史记录,然后使用 grep 过滤。

ssh搜索命令有哪些常用选项?-图3
(图片来源网络,侵删)
history | grep ssh

直接使用 grep 搜索历史文件

Bash 的历史记录通常存储在 ~/.bash_history 文件中,这种方法比 history | grep 更直接。

grep ssh ~/.bash_history

使用 Ctrl+R (交互式搜索)

这是最快、最便捷的方法之一。

  1. 在你的终端中,按下 Ctrl + R
  2. 输入 ssh,你会看到最近使用过的包含 ssh 的命令。
  3. 按下 Enter 直接执行,或者按左右箭头键将其复制到当前行进行修改。

搜索 SSH 配置文件 (~/.ssh/config)

当你有很多 SSH 主机配置时,可以通过别名快速查找。

假设你的 ~/.ssh/config 文件内容如下:

Host prod-server
    HostName 203.0.113.10
    User admin
    Port 2222
Host staging-server
    HostName 203.0.113.20
    User deployer
Host github.com
    User git

使用 grep 搜索

# 搜索包含 "Host" 的行,即所有主机别名
grep "^Host" ~/.ssh/config
# 搜索包含特定关键字的配置
grep "User" ~/.ssh/config

使用 ssh 命令本身 (Tab 自动补全)

这是最实用的方法,当你使用 ssh 命令时,直接按 Tab 键,系统会自动列出 ~/.ssh/config 中定义的所有主机别名。

$ ssh st<TAB>
# 系统会自动补全为 "staging-server"
$ ssh staging-server

搜索 SSH 服务器日志文件

用于审计、排查登录问题(如被暴力破解)或监控服务器访问情况。

重要提示: 你需要拥有服务器的 root 或 sudo 权限才能查看这些日志。

在 Debian / Ubuntu 系统上

日志文件通常位于 /var/log/auth.log

搜索所有成功的 SSH 登录:

grep "Accepted publickey" /var/log/auth.log
# 或者
grep "Accepted password" /var/log/auth.log

搜索所有失败的 SSH 登录(通常是暴力破解):

grep "Failed password" /var/log/auth.log

按 IP 地址搜索:

grep "192.168.1.100" /var/log/auth.log

按用户名搜索:

grep "user" /var/log/auth.log

在 CentOS / RHEL / Rocky Linux 系统上

日志文件位于 /var/log/secure,命令与上面完全相同,只需替换文件路径即可。

grep "Failed password" /var/log/secure

更高级的日志分析工具

对于大型服务器,手动 grep 效率低下,可以使用 fail2banawk 等工具进行更复杂的分析。

使用 awk 统计失败尝试最多的 IP 地址:

# 在 Debian/Ubuntu 上
grep "Failed password" /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr
# 在 CentOS/RHEL 上
grep "Failed password" /var/log/secure | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr
  • awk '{print $(NF-3)}': 提取倒数第3个字段,通常是 IP 地址。
  • sort: 对 IP 地址进行排序。
  • uniq -c: 合并重复的行,并统计次数。
  • sort -nr: 按照数字降序排列,得到最可疑的 IP。

总结表格

搜索目标 命令/工具 说明
搜索网络 SSH 服务器 nmap -p 22 --open 192.168.1.0/24 最强大,推荐使用。
搜索本地 SSH 历史记录 grep ssh ~/.bash_history 快速找到过去用过的命令。
搜索 SSH 配置文件 grep "^Host" ~/.ssh/configssh <TAB> ssh <TAB> 是最便捷的自动补全方式。
搜索服务器登录日志 grep "Failed password" /var/log/auth.log 用于安全审计和排查问题。
分享:
扫描分享到社交APP
上一篇
下一篇