Answers:
-o "UserKnownHostsFile /dev/null"
应该管用。
grep
将标准输出和标准错误合并;退出状态也会改变。如果使用bash
,则最好使用进程替换来消除消息:ssh 2> >( egrep >&2 -v '^Warning: Permanently added') -o "UserKnownHostsFile /dev/null" [...]
。这样可以避免管道,从而避免出口状态处理中的相应变化。
如果由于使用云服务器(AWS EC2,Rackspace CloudServers等)而需要这种行为,或者在Vagrant中不断配置新映像,则可能需要更新SSH配置,而不是在服务器上添加bash别名或更多选项。命令行。
考虑添加以下内容:
Host *.mydomain.com
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
User foo
LogLevel QUIET
我觉得要将主机密钥添加到您的known_hosts(根据我的经验,运行这些服务的人员至少足够聪明,可以使服务于相同主机名的计算机之间的主机密钥保持一致),然后打开StrictHostKeyChecking,关闭CheckHostIP和使用LogLevel ERROR进行日志记录将在不牺牲安全性的情况下为您提供最佳体验。(好吧,没有CheckHostIP,您确实需要信任DNS,如果没有广泛的DNSSEC或类似的东西,这是一个巨大的漏洞;但是我们暂时将其扫一扫。)
我使用一个只读的known_hosts文件,所以我必须做一些事情,否则会收到无数警告,提示无法将条目添加到known_hosts。
我用什么:
Host github.com *.github.com
StrictHostKeyChecking yes
CheckHostIP no
LogLevel ERROR
我希望这些服务通过HTTPS在其网站上发布其SSH主机密钥,因此我可以显式复制它们,而不必先进行连接就可能使自己遭受MITM攻击。
对于单个ssh会话,请使用此
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null user@host
我建议
LogLevel ERROR
过度
LogLevel QUIET
因此您仍然会收到“无法解析主机名”和其他此类错误
grep -v "^Warning: Permanently added"