~/.ssh/known_hosts
中。我该怎么做?
#1 楼
如果由于使用云服务器(AWS EC2,Rackspace CloudServers等)而需要这种行为,或者您在Vagrant中不断配置新映像,则可能需要更新SSH配置,而不是在服务器上添加bash别名或更多选项。命令行。考虑添加以下内容:Host *.mydomain.com
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
User foo
LogLevel QUIET
尽可能严格地使用正则表达式来确保主机安全。
将LogLevel设置为QUIET可以防止出现纪尧姆提到的警告
#2 楼
-o "UserKnownHostsFile /dev/null"
应该工作。
评论
按预期工作,但是它将始终报告:“警告:将'hostname,ip'(RSA)永久添加到已知主机列表中。“我用2>&1 | grep -v“ ^警告:永久添加”
–纪尧姆·布德罗(Guillaume Boudreau)
2011年5月18日17:34
添加-o“ LogLevel ERROR”,它将不再显示警告警告
–约翰
16-9-29在2:37
注意:禁止显示该消息的请求“警告:将'hostname,ip'(RSA)永久添加到已知主机列表中。“被报告给维护者bugzilla.mindrot.org/show_bug.cgi?id=2413
– Ben Creasy
17-10-4在2:14
管道到grep将合并stdout和stderr;退出状态也会改变。如果使用bash,最好使用进程替换来消除该消息:ssh 2>>(egrep>&2 -v'^警告:永久添加')-o“ UserKnownHostsFile / dev / null” [... ]。这样可以避免管道,从而避免出口状态处理中的相应变化。
– Alex O
17-10-10在11:48
@John最好在这些注释中使用其他方法之一,否则您将引入安全漏洞,因为它可能隐藏其他不相关的警告
–乔恩·本特利
19 Mar 5 '19 at 14:21
#3 楼
对于单个ssh会话,请使用此ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null user@host
#4 楼
我觉得要将主机密钥添加到您的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攻击。
#5 楼
我建议LogLevel ERROR
over
LogLevel QUIET
,这样您仍然会收到“无法解析主机名”等错误
评论
您应该能够信任您的SSH连接,恕我直言。不仅让您对风险保持沉默。
–西尔维努尔格
15年1月23日在9:16
真的取决于。我们的开发环境每周都会被拆除并重建,它们的A记录保持不变,但每次构建时都会生成其主机密钥。我们不能保留主机密钥,因为A记录只是基于环境名称在数据库中定义的,并且可以随时删除环境名称或创建新的环境名称,因此上述解决方法确实有用。
– Alex Berry
17年6月27日在8:59
#6 楼
您是否尝试禁用StrictHostKeyChecking
?您可以使用-o
选项或在配置文件~/.ssh/config
中进行操作。评论
我已经在用了。但是它具有不同的效果:降低了主机密钥检查的严格性。即如果主机未知,则在禁用该选项时仍会连接。因此,它仍然可以保存主机。但是我想我已经找到了正确的解决方案(请参阅我的答案)。
–阿尔伯特
2010年5月15日,0:29
#7 楼
我发现以下.ssh / config条目很有用(具有DHCP和DNS的LAN): CheckHostIP no
Host *.*
CheckHostIP yes
结果是本地计算机名称“ zora”或“ goron”将不检查针对动态分配的IP地址,但www.mycompany.com或node42.planetlab.com仍将确认其静态IP。
评论
您确实应该尝试不完全禁用StrictHostKeyChecking,因此cclark的答案对于使用云服务器是一个很大的折衷。
– Alex Recarey
2012年9月24日在16:39
当我针对Vagrant使用Shipit(JavaScript部署工具)时,这对我非常有用。我无法轻易获得Shipit传递给SSH的参数,因此这使我可以回避该工具,并告诉它我做了什么并且不想记住它。
–约翰·芒施(John Munsch)
2015年3月11日,下午3:06
LogLevel是我一直在寻找的东西。它具有附加优势,即在运行脚本时不显示公司配置的通知! (我现在正在运行,日志级别为ERROR)
– Anshu Prateek
2015年8月4日在3:46
我要在哪个文件中添加它?
– Wim Deblauwe
17年5月18日在12:06
这是您的SSH配置文件。在Linux或macOS中,文件通常位于主目录中名为.ssh的目录中,名为config-〜/ .ssh / config
–克拉克
17年5月18日在12:09