ssh-keyscan - 收集 ssh 公钥

总览 (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 

posted @ 2019-06-28 09:07  樊伟胜  阅读(766)  评论(0编辑  收藏  举报