.ssh在我跑之前我没有目录
ssh user@foo.com
这创建了一个带有一个文件的.ssh目录known_hosts.
它有一些这样的文字.
foo.com,107.180.00.00 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAuJfqSnraBz//Ux4j/hZpLv2eYUxNUgCk+9ClqoSgfcu4vXbWtUGSjo75UVQf+uguOeBnRLppJJ3mt0R5c/PPcawUGWfffk33t+biYcqra9xUcyfiGtO/Icko2L1J0EYTXM/8x8VK6UYFMfad2gltnZRa8Am50oHTXot1Df0RljUBxvh/UhmTJUrODpyrl2xY1OMWjM+S6uYCMNeSQGEpNfsWiCIStRnctMZSxiYJOLTSC4F2GF7B8pYFBn5rSwVHp17WCdO+4BZfwvH3HSSH8IWoyFhki+NlG912SEBJXcryvc0JPfAB9DTB4mRImjgrRT8vz5QeaCDrh8k4/A+U1fff
Run Code Online (Sandbox Code Playgroud)
我认为这可能是公共或私人密钥拉出我的服务器的一些方法,但事实并非如此.
这是什么,它用于什么?
我只是想了解更多有关ssh及其工作原理的信息.例如,在这种情况下,我没有在本地计算机上设置私钥,因此它提示输入密码.
研究
根据它,它假设是服务器的公钥
Cas*_*iel 18
这个文件实际上是您的个人证书颁发机构.它是您确定的所有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
要添加到上面的答案和您的评论中,ssh会话有四个构建基块
SSH算法协商涉及密钥交换状态机,该状态机在发送SSH_MSG_KEXINIT消息以及算法列表时开始。
密钥交换方法或简称为kex指定用于加密的会话密钥和发送到客户端的主机身份验证主机公共密钥(ssh-rsa,ssh-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消息,在此部分开始之前已进行了交换。
C生成一个随机数x(1 <x <q)并计算e = g ^ x mod p。C将e发送给S。
S生成一个随机数y(0 <y <q)并计算f = g ^ y mod p。S接收e。它计算K = e ^ y mod p,H =哈希(V_C || V_S || I_C || I_S || K_S || e || f || K)(这些元素根据其类型进行编码;请参见下文) ,并使用其专用主机密钥在H上签名。S将(K_S || f || s)发送给C。签名操作可能涉及第二个哈希操作。
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。
在某些系统中,第三步中提到的本地数据库可以是.ssh / known_hosts文件。因此,为回答您的问题,主机在密钥交换期间将公钥发送给客户端。
当前定义了以下公共密钥和/或证书格式:
ssh-dss必需签署原始DSS密钥
ssh-rsa推荐签名Raw RSA Key
pgp-sign-rsa可选符号OpenPGP证书(RSA密钥)
pgp-sign-dss可选符号OpenPGP证书(DSS密钥)
| 归档时间: |
|
| 查看次数: |
35779 次 |
| 最近记录: |