SSH:无法建立主机<host>的真实性


83

此消息是什么意思?这是潜在的问题吗?频道不安全吗?

还是仅仅是连接到新服务器时始终显示的默认消息?

过去使用SSH时,我经常会看到此消息:我总是以通常的方式使用密码输入登录名,对此我感觉很好,因为我没有使用私钥/公钥(这更加安全)。而不是短密码)。但是这次我用ssh设置了一个公钥来连接到bitbucket,但仍然收到消息。我知道最后的密码短语提示是用于私钥解密的另一种补充安全措施。

我希望有人可以对“无法建立真实性”消息的含义做出很好的解释。

The authenticity of host 'bitbucket.org (207.223.240.181)' can't be established.

RSA key fingerprint is 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'bitbucket.org,207.223.240.181' (RSA) to the list of
known hosts.
Enter passphrase for key '/c/Users/Steven/.ssh/id_rsa':

2
这确实是那些“准确地说出所说的话”消息之一。这意味着ssh没有办法告诉您您正在和谁说话bitbucket.org。如果您配置了某种方式使其知道,那么它将无法正常工作。如果您没有,则表明您没有。
大卫·史瓦兹

Answers:


71

告诉您以前从未连接过此服务器。如果您期望如此,那是完全正常的。如果您偏执,请使用备用通道验证密钥的校验和/指纹。(但请注意,可以重定向您的ssh连接的人也可以重定向Web浏览器会话。)

如果您在此ssh安装之前已连接到该服务器,则说明该服务器已使用新密钥重新配置,或者有人在欺骗服务器的身份。由于中间人攻击的严重性,它警告您这种可能性。

无论哪种方式,您都可以向某人提供安全的加密通道。没有对应于指纹的私钥的任何人97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40都无法解码您发送的内容。

用于验证自己身份的密钥是无关的……您不希望将身份验证信息发送到可能会窃取身份验证的欺诈服务器,因此,根据使用密码还是使用密码短语,您不应期望任何更改。私钥登录。您只是还没走那么远。


因此,即使有恶意的第三方,并且我拒绝了该邮件,我要做的就是向他发送我的公钥,而他仍将无法解密我的数据?因此,现在可以泄露数据的唯一方法是:(1)破坏我的私钥,或者(2)破坏Bitbucket的服务器,或者(3)破坏Bitbucket帐户。只要他们限制登录尝试(如果不这样做,我会感到很惊讶)在这一点上确实没有太多的理由偏执,是吗?
史蒂文·卢

10
@Steven:您没有向他发送您的公钥,他已经拥有了。您正在执行的操作是使用私钥对挑战进行身份验证...如果他连接到声称是您的真实 bitbucket.org,收到了真正的挑战,并在挑战您时使用了该挑战,那么他可能会欺骗您向他发送有效的回复,然后他将其用于获取真实bitbucket.org上您的帐户的访问权限。他仍然没有您的私钥,因此他将来无法登录,也无法登录到任何其他可以解锁的资源,但他确实有一个登录会话。
Ben Voigt 2012年

这就是我说“您不想将身份验证信息发送到欺诈性服务器”时回答的意思。
Ben Voigt 2012年

2
“如果您偏执,请使用备用通道验证密钥的校验和/指纹。” 对于偏执狂(和记录),github的指纹在help.github.com/articles/generating-ssh-keys上confluence.atlassian.com
display / BITBUCKET /…中

1
@BenVoigt是的,我知道,真正的偏执狂当然会通过另一个不相关的网络到达那些页面,或者可能会飞到github总部亲自拿到指纹:)
13年

21

假设您遇到某人以交换一些商业机密。您的顾问会告诉您,您从未见过该人,这可能是冒名顶替者。此外,在下一次与他会面时,您的顾问不会再警告您。这就是消息的含义。该人是远程服务器,而您的顾问是ssh客户端。

我认为在与她分享秘密之前仔细检查该人的身份并不偏执。例如,您可以打开一个带有她的照片的网页,并将其与您面前的脸相比较。或检查她的身份证。

对于Bitbucket服务器,您可以使用另一台更受信任的计算机,并从中获取其头像,然后将其与您正在使用的计算机中获得的图像进行比较。采用:

 ssh-keyscan -t rsa bitbucket.org | ssh-keygen -lv -f -

如果面部匹配,则可以使用以下方法将密钥添加到文件中:例如~/.ssh/known_hosts(在许多Linux发行版中为标准位置):

ssh-keyscan -t rsa -H bitbucket.org >> ~/.ssh/known_hosts

SSH客户端不会警告您,因为它已经知道她的脸。只要您连接,它就会比较面孔。那很重要。在冒名顶替的情况下(例如,中间人攻击),ssh客户端将拒绝连接,因为其外观已经更改。


这个答案非常有帮助
010110110101 '17

4
这应该是公认的答案: ssh-keyscan -t rsa -H bitbucket.org >> ~/.ssh/known_hosts 谢谢Ivan!
罗德

1
@Rod:您将根据完全不需要的命令(known_hosts如问题中已经显示的,只需在原始警告中键入“是” 即可修改)和危险的(您添加至文件不一定与您看到的文件相同,因为您两次提取了文件!)?
Ben Voigt

@BenVoigt此解决方案提供的内容是:键入“是”并不表示此解决方案可完全编写脚本。我认为大多数人都可以弄清楚如何回答“(是/否)?”。提示。我在尝试找出如何在没有人为干预的情况下(针对服务器设置脚本)解决此问题的过程中遇到了这个问题。令我兴奋的是,我想我没有注意到OP的问题与我的有所不同,但是IMO这仍然是线程中最有用/最不明显的答案。
Rod

1
@Rod:不,它没有用。降低安全性是不好的。寻找降低安全性的更快方法与有用完全相反。
Ben Voigt

5

我只需要在其中创建known_hosts文本文件~/.ssh

sudo vim ~/.ssh/known_hosts
sudo chmod 777 ~/.ssh/known_hosts

完成此操作后,它添加了主机,我再也没有看到该消息。


我认为这真的不会改变任何事情。服务器本身已更改时,将显示警告。例如,如果您配置了第一次连接的新虚拟机。无论您是否拥有known_hosts文件(具有正确的权限),都不会阻止它向您询问新服务器的真实性...除非您已经以某种方式获取了该服务器的发布密钥签名并将其放入您的服务器中known_hosts,这是跳过检查的一种正常方法(尽管对检查说“是”通常会更快地达到相同目的)
Steven Lu

谢谢。我曾经知道过主机,但是一直收到警告。我只需要更改known_hosts上的权限即可停止警告。
ArcaneDominion '16

6
请不要这样做。可能会造成严重的安全隐患。您的主机文件只能由您写。第二个命令基本上是允许您计算机中的任何人欺骗服务器身份。
Stolz

“当服务器本身已更改时,将显示警告。” 或者,以前从未访问过服务器。
Rod

2

还有另一种简单的方法,只需触摸/root/.ssh下的“ config”文件并添加参数StrictHostKeyChecking否下次登录服务器时,它们的rsa密钥将被添加到known_hosts,并且不会要求“是”。用于真实性确认


3
不建议这样做。这很容易但不是正确的处理方式。
Vikas

1

该消息只是SSH,告诉您以前从未见过此特定主机密钥,因此它无法真正验证您是否正在连接到您认为是的主机。当您说“是”时,它将ssh密钥放入您的known_hosts文件中,然后在随后的连接上将从主机获取的密钥与已知_hosts文件中的密钥进行比较。

有一篇有关堆栈溢出的文章显示了如何禁用此警告,https://stackoverflow.com/questions/3663895/ssh-the-authenticity-of-host-hostname-cant-be-建立


10
但是不建议禁用该警告-它是有目的的,可提供非常有用的安全信息。
罗里·阿尔索普

0

除了已经给出的答案(您之前从未连接过该主机)之外,还有一种独特的可能性是您从未从当前主机(之前连接过该主机)连接过;这只是心理上的不同;您以为您是从主机A连接到B,而实际上是在尝试从主机X连接到B。例如,当您首先从A切换到X,然后从同一终端尝试以B切换到B并认为您仍然在A上时,可能会发生这种情况。


我想知道如果主机A知道B但X不知道,但是使用ssh代理转发是否还能抑制警告,但是代理转发发生在A和X之间。大多数环境(提供ssh)和终端应用程序都支持代理转发,这有助于减少了仅用于终端设备的ssh密钥数量。
史蒂文·卢

0

在我的情况下,由于更改了默认设置,因此由于我的主目录权限而导致密码较少的登录无法正常工作。最后,这对我有用。我的主目录权限是

/ home /用户名

drwxr----x. 18 username     groupname  4096 May 11 11:52 username

/ home /用户名/.ssh

268823097 drwx------   2 username groupname     29 May 11 11:53 .ssh

/ home /用户名/.ssh/authorized_keys

-rw-r----- 1 username groupname 402 May 11 11:53 authorized_keys
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.