概述
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` 包含在自动化脚本中。这可以减少手动添加密钥的麻烦,并保持一致的安全策略。