SSH原理

Posted rtoax

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSH原理相关的知识,希望对你有一定的参考价值。

SSH原理

荣涛
2021年11月15日

文档修改日志

日期修改内容修改人备注
2021年11月15日创建荣涛

1. 引言

SSH是一种协议标准,其目的是实现安全远程登录以及其它安全网络服务。SSH仅仅是一协议标准,其具体的实现有很多,既有开源实现的OpenSSH,也有商业实现方案。使用范围最广泛的当然是开源实现OpenSSH。

2. SSH中是如何解决中间人攻击问题?

2.1. 基于口令的认证

从上面的描述可以看出,问题就在于如何对Server的公钥进行认证?在https中可以通过CA来进行公证,可是SSH的publish key和private key都是自己生成的,没法公证。只能通过Client端自己对公钥进行确认。通常在第一次登录的时候,系统会出现下面提示信息:

The authenticity of host 'ssh-server.example.com (12.18.429.21)' can't be established.
RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.
Are you sure you want to continue connecting (yes/no)? 

上面的信息说的是:无法确认主机ssh-server.example.com(12.18.429.21)的真实性,不过知道它的公钥指纹,是否继续连接?

之所以用fingerprint代替key,主要是key过于长(RSA算法生成的公钥有1024位),很难直接比较。所以,对公钥进行hash生成一个128位的指纹,这样就方便比较了。

如果输入yes后,会出现下面信息:

Warning: Permanently added 'ssh-server.example.com,12.18.429.21' (RSA) to the list of known hosts. 
Password: (enter password) 

该host已被确认,并被追加到文件known_hosts中,然后就需要输入密码,之后的流程就按照图进行。

2.2. 基于公钥认证

在上面介绍的登录流程中可以发现,每次登录都需要输入密码,很麻烦。SSH提供了另外一种可以免去输入密码过程的登录方式:公钥登录。

3. 参考链接


Copyright (C) CESTC Com.

以上是关于SSH原理的主要内容,如果未能解决你的问题,请参考以下文章

ssh:无法建立主机“主机名”的真实性

如何避免 Maven 在 ssh 主机真实性问题上构建停滞?

markdown ssh连接每次提示无法建立主机'xxx'的真实性。,输入是确认

在linux下登录ssh怎么指定端口

CoreOS coreos-assembler文档

CoreOS coreos-assembler文档