首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ssh:无法建立主机'hostname‘的真实性

ssh:无法建立主机'hostname‘的真实性
EN

Stack Overflow用户
提问于 2010-09-08 09:04:28
回答 19查看 307.9K关注 0票数 170

当我ssh到一台机器时,有时我会收到这个错误警告,它会提示我说"yes“或"no”。当从自动ssh到其他机器的脚本运行时,这会造成一些问题。

警告消息:

代码语言:javascript
运行
复制
The authenticity of host '<host>' can't be established.
ECDSA key fingerprint is    SHA256:TER0dEslggzS/BROmiE/s70WqcYy6bk52fs+MLTIptM.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'pc' (ECDSA) to the list of known hosts.

有没有办法自动说“是”或忽略这一点?

EN

回答 19

Stack Overflow用户

回答已采纳

发布于 2010-09-08 09:26:14

根据您的ssh客户机,您可以在命令行上将StrictHostKeyChecking选项设置为no,和/或将密钥发送到空的known_hosts文件。您还可以在配置文件中为所有主机或一组给定的IP地址或主机名设置这些选项。

代码语言:javascript
运行
复制
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no

编辑

正如@IanDunn指出的那样,这样做存在安全风险。如果您要连接的资源已被攻击者欺骗,他们可能会向您重播目标服务器的挑战,欺骗您认为您正在连接到远程资源,而实际上他们是使用您的凭据连接到该资源。在更改连接机制以跳过HostKeyChecking之前,您应该仔细考虑这是否是一个适当的风险。

Reference

票数 147
EN

Stack Overflow用户

发布于 2014-07-30 00:44:01

一个值得更好回答的老问题。

您可以在不禁用StrictHostKeyChecking的情况下阻止交互式提示(这是不安全的)。

将以下逻辑合并到脚本中:

代码语言:javascript
运行
复制
if [ -z "$(ssh-keygen -F $IP)" ]; then
  ssh-keyscan -H $IP >> ~/.ssh/known_hosts
fi

它检查服务器的公钥是否在known_hosts中。如果不是,它从服务器请求公钥并将其添加到known_hosts

这样,您只会受到一次中间人攻击,可以通过以下方式减轻攻击:

确保脚本首次通过安全的channel

  • inspecting日志或known_hosts进行连接的
  • 手动检查指纹(只需执行一次)
票数 87
EN

Stack Overflow用户

发布于 2013-08-23 05:12:50

要禁用(或控制禁用),请将以下行添加到/etc/ssh/ssh_config的开头...

代码语言:javascript
运行
复制
Host 192.168.0.*
   StrictHostKeyChecking=no
   UserKnownHostsFile=/dev/null

选项:

  • 主机子网可以是*,以允许对所有IP进行不受限制的访问。
  • 编辑/etc/ssh/ssh_config用于全局配置,编辑~/.ssh/config用于特定于用户的配置。

请参阅http://linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-host-key-checking.html

有关superuser.com的类似问题,请参阅https://superuser.com/a/628801/55163

票数 39
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3663895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档