我正在使用ssh-keyscan
shell 脚本来接受主机密钥。主机由主机名标识,但不在 /etc/hosts 中。它们在里面,./ssh/config
所以我可以ssh <hostname>
,但我不能ping
等等。
看起来好像ssh-keyscan
没有使用该.ssh/config
文件,这看起来很有趣。
有人能证实他们也遇到过这种事吗?
真正的问题:有人有办法让 ssh-keyscan 使用 ~/.ssh/config 吗?
答案1
ssh-keyscan 不会并且不能被用来使用.ssh/config
。
但是,您所要求的并不要求它这样做:只需将真实的主机名/地址传递给 ssh-keyscan(从而将它们存储在 known_hosts 中)即可,即使您使用带有配置的别名也是如此ssh
。但您甚至可以指示 ssh-keyscan 在使用该选项时将除用于连接的名称之外的其他名称添加到输出中-f
:
-f file
Read hosts or “addrlist namelist” pairs from file, one per line.
If - is supplied instead of a filename, ssh-keyscan will read
hosts or “addrlist namelist” pairs from the standard input.
答案2
ssh-keyscan 是一个用于收集多个主机的公共 ssh 主机密钥的实用程序。它旨在帮助构建和验证**ssh_known_hosts**
文件。ssh-keyscan 提供了一个适合 shell 和 perl 脚本使用的最小界面。
-f file
Read hosts or addrlist namelist pairs from this file, one per line. If - is supplied instead of a filename, ssh-keyscan will read hosts or addrlist namelist pairs from the standard input.
Input format:
1.2.3.4,1.2.4.4 name.my.domain,name,n.my.domain,n,1.2.3.4,1.2.4.4
Output format for rsa1 keys:
host-or-namelist bits exponent modulus
Output format for rsa and dsa keys:
host-or-namelist keytype base64-encoded-key
Where keytype is either ''ssh-rsa'' or ''ssh-dss''.
/etc/ssh/ssh_known_hosts
例如:
Print the rsa host key for machine hostname:
$ ssh-keyscan hostname
Find all hosts from the file ssh_hosts which have new or different keys from those in the sorted file ssh_known_hosts:
$ ssh-keyscan -t rsa,dsa -f ssh_hosts | sort -u - ssh_known_hosts | diff ssh_known_hosts -