ssh-keyscan

获取远程 SSH 服务器的公钥,用于管理 known_hosts 文件

语法

ssh-keyscan [options] hostname

参数

参数说明示例级别
-t 指定密钥类型 ssh-keyscan -t ed25519 host 常用
-p 指定端口 ssh-keyscan -p 2222 host 常用
-H 对主机名进行哈希处理 ssh-keyscan -H host >> ~/.ssh/known_hosts 进阶
-f 从文件读取主机列表 ssh-keyscan -f hosts.txt 进阶
-T 设置连接超时时间(秒) ssh-keyscan -T 5 host 进阶

示例

获取主机公钥并添加到 known_hosts

ssh-keyscan github.com >> ~/.ssh/known_hosts
CI/CD 中常用,避免首次连接的交互确认

获取指定类型的密钥

ssh-keyscan -t ed25519,rsa server.example.com
只获取 ed25519 和 rsa 类型的主机密钥

批量扫描多台主机

ssh-keyscan -f server_list.txt >> ~/.ssh/known_hosts
从文件读取主机列表批量获取密钥

哈希主机名增强安全性

ssh-keyscan -H 192.168.1.100 >> ~/.ssh/known_hosts
哈希后 known_hosts 中不会暴露服务器 IP

常见错误

getaddrinfo: Name or service not known 主机名无法解析,检查 DNS 或使用 IP 地址
Connection timed out 目标主机不可达或防火墙阻止,检查网络连通性

技巧

相关命令