known_hosts实际上是什么? [关闭]

问题描述 投票:25回答:2

在我跑之前,我没有.ssh目录

ssh [email protected]

这创建了一个带有一个文件known_hosts的.ssh目录。

它有一些这样的文字。

foo.com,107.180.00.00 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAuJfqSnraBz//Ux4j/hZpLv2eYUxNUgCk+9ClqoSgfcu4vXbWtUGSjo75UVQf+uguOeBnRLppJJ3mt0R5c/PPcawUGWfffk33t+biYcqra9xUcyfiGtO/Icko2L1J0EYTXM/8x8VK6UYFMfad2gltnZRa8Am50oHTXot1Df0RljUBxvh/UhmTJUrODpyrl2xY1OMWjM+S6uYCMNeSQGEpNfsWiCIStRnctMZSxiYJOLTSC4F2GF7B8pYFBn5rSwVHp17WCdO+4BZfwvH3HSSH8IWoyFhki+NlG912SEBJXcryvc0JPfAB9DTB4mRImjgrRT8vz5QeaCDrh8k4/A+U1fff

我认为这可能是公共或私人密钥拉出我的服务器的一些方法,但事实并非如此。

这是什么,它用于什么?

我只是想了解更多有关ssh及其工作原理的信息。例如,在这种情况下,我没有在本地计算机上设置私钥,因此提示输入密码。

研究

根据它,它假设是服务器的公钥

https://security.stackexchange.com/questions/20706/what-is-the-difference-between-authorized-key-and-known-host-file-for-ssh

ssh
2个回答
4
投票

要添加上面的答案和您的评论,ssh会话有四个构建块

  1. 加密(每个会话密钥交换后派生的对称密钥)
  2. 数据完整性(MAC使用例如SHA,HMAC)
  3. 密钥交换方法
  4. 公钥方法或主机密钥方法

SSH算法协商涉及一个密钥交换状态机,它在发送SSH_MSG_KEXINIT消息和算法列表时开始。

密钥交换方法或简单地kex指定用于加密的会话密钥和发送到客户端的主机认证主机公钥(ssh-rsassh-dss ..)。以下步骤是使用Diffie hellman密钥交换算法对kex进行的基本步骤

引用RFC https://tools.ietf.org/html/rfc4253

以下步骤用于交换密钥。在这方面,C是客户; S是服务器; p是一个大的安全素数; g是GF(p)子组的生成器; q是子组的顺序; V_S是S的标识字符串; V_C是C的识别字符串; K_S是S的公共主机密钥; I_C是C的SSH_MSG_KEXINIT消息,I_S是S的SSH_MSG_KEXINIT消息,在此部分开始之前已经交换过。

  1. C生成随机数x(1 <x <q)并计算e = g ^ x mod p。 C将e发送给S.
  2. S生成随机数y(0 <y <q)并计算f = g ^ y mod p。 S收到e。它计算K = e ^ y mod p,H = hash(V_C || V_S || I_C || I_S || K_S || e || f || K)(这些元素根据它们的类型编码;见下文)和H上的签名及其私有主机密钥。 S发送(K_S || f || s)到C.签名操作可能涉及第二次散列操作。
  3. C验证K_S确实是S的主机密钥(例如,使用证书或本地数据库)。 C也可以在没有验证的情况下接受密钥;然而,这样做会使协议对主动攻击不安全(但在许多环境中短期内可能出于实际原因而需要)。 C然后计算K = f ^ x mod p,H = hash(V_C || V_S || I_C || I_S || K_S || e || f || K),并验证H上的签名s。

某些系统中步骤3中提到的本地数据库可以是.ssh / known_hosts文件。因此,为了回答您的问题,主密钥在密钥交换期间由主机发送给客户端。

目前定义了以下公钥和/或证书格式:

ssh-dss REQUIRED sign Raw DSS Key

ssh-rsa推荐标志Raw RSA Key

pgp-sign-rsa可选标志OpenPGP证书(RSA密钥)

pgp-sign-dss可选标志OpenPGP证书(DSS密钥)


14
投票

这个文件实际上是您的个人证书颁发机构。它是您确定的所有SSH服务器主机公钥的列表是准确的。 known_hosts中的每个条目都是一个包含三个或更多空格分隔字段的大行,如下所示:

一个。一个或多个服务器名称或IP地址,以逗号连接在一起。

foo.com,107.180.00.00

湾钥匙的类型。

ssh-rsa

C。公钥数据本身编码为保持在ASCII范围内。

AAAAB3NzaC1yc2EAAAABIwAAAQEAuJfqSnraBz//Ux4j/hZpLv2eYUxNUgCk+9ClqoSgfcu4vXbWtUGSjo75UVQf+uguOeBnRLppJJ3mt0R5c/PPcawUGWfffk33t+biYcqra9xUcyfiGtO/Icko2L1J0EYTXM/8x8VK6UYFMfad2gltnZRa8Am50oHTXot1Df0RljUBxvh/UhmTJUrODpyrl2xY1OMWjM+S6uYCMNeSQGEpNfsWiCIStRnctMZSxiYJOLTSC4F2GF7B8pYFBn5rSwVHp17WCdO+4BZfwvH3HSSH8IWoyFhki+NlG912SEBJXcryvc0JPfAB9DTB4mRImjgrRT8vz5QeaCDrh8k4/A+U1fff

d。任何可选的评论数据。

也!!这个帖子可能对你有用:

https://security.stackexchange.com/a/20710

© www.soinside.com 2019 - 2024. All rights reserved.