> 网络管理 > ssh-keyscan

ssh-keyscan: 收集 SSH 主机密钥

这是一个用于收集 SSH 服务器公钥的实用程序。收集到的密钥会被添加到 `~/.ssh/known_hosts` 文件中,以便 SSH 客户端在连接服务器时验证服务器的身份。这在防止中间人攻击(Man-in-the-Middle attack)方面起着至关重要的作用。

概述

ssh-keyscan 从一个或多个主机收集 SSH 公钥并将其输出到标准输出。这些密钥随后被添加到 `known_hosts` 文件中,以增强 SSH 连接的安全性。

主要功能

  • 收集 SSH 主机公钥
  • 支持更新 `known_hosts` 文件
  • 防止中间人攻击 (MITM)
  • 扫描多个主机或特定端口

主要选项

ssh-keyscan 命令的主要选项控制着密钥的收集方式、输出格式以及目标主机的指定。

密钥收集与输出

生成的命令:

请尝试组合命令。

描述:

`ssh-keyscan` 执行命令。

通过组合这些选项,您可以与 AI 一起虚拟地执行命令。

使用示例

通过 ssh-keyscan 的各种使用示例,了解如何有效地收集和管理 SSH 主机密钥。

扫描单个主机的密钥

ssh-keyscan example.com

将指定主机的所有公钥显示到标准输出。

将密钥添加到 known_hosts 文件

ssh-keyscan -H example.com >> ~/.ssh/known_hosts

收集主机的密钥并将其添加到 `~/.ssh/known_hosts` 文件。建议使用 `-H` 选项哈希主机名进行存储,以提高安全性。

扫描特定端口的密钥

ssh-keyscan -p 2222 example.com

扫描提供 SSH 服务但使用非标准端口(非 22)的主机的密钥。

从文件读取主机列表

ssh-keyscan -f hosts.txt

当 `hosts.txt` 文件中每行包含一个主机名时,扫描该文件中所有主机的密钥。

仅扫描特定类型的密钥

ssh-keyscan -t rsa,ecdsa example.com

仅收集 RSA 和 ECDSA 类型的密钥。

提示与注意事项

在使用 ssh-keyscan 时,这里有一些有用的提示和需要注意的安全事项。

安全注意事项

  • 请务必确认收集到的密钥来自可信的来源。特别是对于首次连接的服务器,最好直接从服务器管理员那里获取密钥的指纹。
  • `known_hosts` 文件是敏感信息,应使用适当的文件权限(通常是 600)进行保护。
  • `ssh-keyscan` 只收集服务器的公钥,不尝试对服务器进行身份验证。因此,即使没有服务器的访问权限,也可以收集其密钥。

在自动化脚本中使用

在配置新服务器或管理大规模环境中的 `known_hosts` 文件时,可以将 `ssh-keyscan` 包含在自动化脚本中。这可以减少手动添加密钥的麻烦,并保持一致的安全策略。


相同类别命令