ssh       

ssh

非对称加密概念

公钥加密,私钥解密

私钥加密=签名,公钥解密=验签

ssh口令登陆

image-20200109181038218

远程主机收到用户的登录请求,把自己的公钥发给用户

用户使用这个公钥,将登录密码加密后,发送回来

远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录

ssh公钥登录

image-20200107200957370

Client将自己的公钥存放在Server上,追加在文件authorized_keys中。

Server端接收到Client的连接请求后,会在authorized_keys中匹配到Client的公钥pubKey,并生成随机数R,用Client的公钥对该随机数进行加密得到pubKey(R),然后将加密后信息发送给Client。

Client端通过私钥进行解密得到随机数R,然后对随机数R和本次会话的SessionKey利用MD5生成摘要Digest1,发送给Server端。

Server端会也会对R和SessionKey利用同样摘要算法生成Digest2。

Server端会最后比较Digest1和Digest2是否相同,完成认证过程。

https对比

ssh口令加密和https都是公钥加密法,也就是说,客户端先向服务器端索要公钥,然后用公钥加密信息,服务器收到密文后,用自己的私钥解密。

谁提供公钥:客户端、服务端

服务端提供:中间人攻击,不能保证公钥是服务端的,需要认证(https 通过证书ssh会发来公钥的hash值,让客户端确认,然后输入密码登陆,进入以上口令登陆流程

https用公钥加密数据,ssh登陆的时候用公钥加密密码

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,可以免密登陆

ssh-keygen

  1. id_rsa:保存私钥
  2. id_rsa.pub:保存公钥
  3. authorized_keys:保存已授权的客户端公钥
  4. known_hosts:保存已认证的远程主机ID

image-20200107203306812

ref

http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html

https://www.jianshu.com/p/33461b619d53