相当于 Solaris 10/11 中的“ssh-keyscan -H”

相当于 Solaris 10/11 中的“ssh-keyscan -H”

我正在创建一个 Perl 程序,将指定的主机添加到 root 的known_hosts 文件中。该程序可以在 AIX 和 Linux 中运行,但不能在 Solaris 中运行,遗憾的是,我找不到它的等效命令。

样品线:

system("ssh-keyscan -H www.myserver.domain >> /.ssh/known_hosts");

输出:

ssh-keyscan:非法选项 -- H 用法:ssh-keyscan [-v46] [-p 端口] [-T 超时] [-f 文件] [主机 | 端口]地址列表名单] [...]

更新1:

我尝试了以下命令,但它仍然要求真实性:

system("ssh-keyscan -t rsa www.myserver.domain >> /.ssh/known_hosts");

更新2: Perl 之外的输出:

# ssh-keyscan -t rsa www.myserver.domain >> /.ssh/test123.text 
# www.myserver.domain SSH-2.0-OpenSSH_6.7p1 Debian-5+deb8u3  
# less test123.text
# www.myserver.domain ssh-rsa KEY  
# ssh www.myserver.domain
# The authenticity of host 'www.myserver.domain (IP)' can't be established. RSA key fingerprint is FINGERPRINT. Are you sure you want to continue connecting (yes/no)?

答案1

查看 Solaris 10/11 上 ssh-keyscan 的手册页,似乎不支持该开关。

参考:ssh-keyscan 手册页
ssh-keyscan [-v46] [-p port] [-T timeout] [-t type] 
     [-f file] [-] [host... | addrlist namelist] [...]

我认为您可以ssh-keyscan <hostname>检索密钥然后将它们写入您的~/.ssh/known_hosts文件。这仍然有效,但只是不会将主机使用的所有名称放在一行中,如下所示:

hostname1, hostname1.fqdn.com .....

因此,您可能需要对生成的文件进行一些清理工作known_hosts

主机真实性

如果您发现自己遇到了相当于第 22 条陷阱的问题,即您无法扫描文件中尚不存在的主机known_hosts

无法确定主机“www.myserver.domain (IP)”的真实性。 RSA密钥指纹是FINGERPRINT。您确定要继续连接吗(是/否)?

您可以通过暂时禁用来解决此问题StrictHostKeyChecking

$ cat ~/.ssh/config
...
StrictHostKeyChecking no
...

然后再次执行您的keyscan <host> ...命令。完成后,请务必StrictHostKeyChecking从您的~/.ssh/config.

参考

相关内容