如何让ssh的时候不提示添加host key | 如何加快ssh登录的速度

最近在将lniautoconf和autossh这两个脚本合成的时候,碰到了一个问题:通过在kickstart文件的最后,将root用户生成好的公钥直接拷贝到目的机器/root/.ssh目录下,从而让ssh无密码登录在密钥准备方面OK了。 

但是随后就碰到了一个棘手的问题:ssh第一次登录对方节点的时候,会出现一个是否要添加hostkey的界面交互提示,要回答yes/no才行,虽然只需要回答一次,但是这个问题就导致了我们的自动化脚本有了大问题,因为如果这个问题不解决,就等于用户在使用完了这个脚本之后,还要再执行一个expect脚本来把每个节点的yes/no的这种情况都解决,这就违背了我们当初合并这两个脚本的初衷 -- 如果用户在执行完我们这个脚本之后还需要再执行其他的脚本才能彻底完成 Linux OS自动部署+SSH登录无密码 这两个效果的话,这就等于又让用户执行了两个脚本,那起初我们合并lniautoconf和autossh就变得没有了意义。所以,这个问题必须解决。 

还好,在查看了man ssh_config之后,这个问题可以解决,在/root/.ssh目录下创建文件config,如果是普通用户,那就是~/.ssh目录下,在里面添加一行: 

StrictHostKeyChecking no 

这样,ssh登录的时候如果发现这个host没有添加过key,就会自动将key添加到~/.ssh/known_hosts文件中,而不会提问了。默认这个值是ask,所以就会出现提示。这个项目还可以配置成yes,这是最严格的检查。这种情况下,每次都需要手动将key添加到~/.ssh/known_hosts文件中才行。 

要加快ssh登录的速度,科学的办法就是在服务器的hosts文件中添加客户端的IP地址和hostname的映射,或者配置一个DNS server用来解析所有的机器。当然,也有偷懒的办法,编辑/etc/ssh/sshd_config,加入一行:UseDNS no,这样也可以很大程度上加快ssh登录的时间。 

原文地址:https://www.cnblogs.com/super119/p/1909817.html