总览 (SYNOPSIS)
ssh-keyscan -words [-v46 ] [-p port ] [-T timeout ] [-t type ] [-f file ] [host | addrlist namelist ] [... ]
描述 (DESCRIPTION)
工具用来收集一组主机的 ssh 主机公钥 (host key), 设计目的是帮助建立和验证 ssh_known_hosts 文件.提供了一个小巧的接口让 shell 和 perl 文件使用.
使用了非阻塞 socket I/O 函数, 尽可能多的并行访问多个主机, 因此它的效率很高. 它可以在数十秒内采集某域中 1,000 台主机的密钥, 即使某些主机离线或不使用 ssh. 扫描的时候无须登录目标主机, 也不涉及任何加密操作.
可用的选项有:
- -p port
- 远程主机的端口.
- -T timeout
- 设置连接超时. 接入主机后, 从最后一次读到数据经过 timeout 秒没有新的数据进来, 连接就被关闭. 默认超时是 5 秒.
- -t type
- 指定收集的密钥类型. 可选项有协议第一版的 ``rsa1'' 和协议第二版的 ``rsa'' 或 ``dsa'' 可以指定多个选项, 中间用逗号隔开. 默认项是 ``rsa1''
- -f filename
- 从该文件读取主机名或 addrlist namelist 地址/名字对, 一行一项. 如果用 - 代替文件名, 就从标准输入设备读取主机名或 addrlist namelist 地址/名字对.
- -v
- 冗长模式. 使 显示调试信息.
- -4
- 强制 只使用 IPv4 地址.
- -6
- 强制 只使用 IPv6 地址.
安全 (SECURITY)
如果通过建立了 ssh_known_hosts 文件, 但却没有验证里面的公钥, 用户很容易遭到中间人 攻击. 而另一方面, 如果安全模型允许这个风险, 创建 ssh_known_hosts 文件后,能够帮助检测已经发起的密钥篡改或中间人攻击.
示例 (EXAMPLES)
显示 hostname 的 rsa1 主机密钥:
$ ssh-keyscan hostname
在 ssh_hosts 文件中查找那些主机, 它们有新的密钥, 或者密钥和排序后的 ssh_known_hosts 文件不同:
$ ssh-keyscan -t rsa,dsa -f ssh_hosts | sort -u - ssh_known_hosts | diff ssh_known_hosts -
文件 (FILES)
输入格式:
1.2.3.4,1.2.4.4 name.my.domain,name,n.my.domain,n,1.2.3.4,1.2.4.4
rsa1 密钥的输出格式:
host-or-namelist bits exponent modulus
rsa 和 dsa 密钥的输出格式:
host-or-namelist keytype base64-encoded-key
这里的 keytype 既可以是 ``ssh-rsa'' 也可以是 ``ssh-dsa''
/etc/ssh/ssh_known_hosts