ssh服务工作原理和配置
  U9ElBp9F5cmM 2023年11月19日 18 0

ssh服务

ssh: secure shell,22/tcp,安全的远程登录,实现加密通信,代替传统的telnet协议

具体的软件实现:

  1. OpenSSH:ssh协议的开源实现,Centos默认安装
  2. dropbear:另一个开源项目的实现

SSH协议版本

  1. v1:基于CRC-32做MAC,不安全;man-in-middle
  2. v2:双方主机协议选择安全的MAC方式,基于DH算法做密钥交换,基于RSA或DSA实现身份认证

公钥交换原理

ssh服务的公钥和ssh服务的版本无关,v1和v2版本都同样,存在被劫持的风险,第一次连接一定要确保连接正确。

  1. 客户端发起连接请求
  2. 服务的返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)
  3. 客户端生成密钥对
  4. 客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密
  5. 客户端发送加密后的值到服务端,服务端用私钥解密,得到Res
  6. 服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)
  7. 最终:双方各自持有三个密钥,分别为自己的一对公、私钥以及对方的公钥,之后的所有通讯都会被加密

ssh服务工作原理和配置_远程登录


服务端发生改变

当客户端第一次保存连接的服务端公钥后,后面的每次连接都会检查公钥是否一致,如果目标机器公钥发生了变化(也有可能是其它机器使用了和服务端相同的ip),ssh会发出警告

ssh服务工作原理和配置_客户端_02


测试:

ssh客户端192.168.224.162向ssh服务端192.168.224.163发起第一次连接,经过确认后,保存了服务端的公钥并连接。

ssh服务工作原理和配置_远程登录_03


下面我将原服务端192.168.224.163关机,模拟连接请求被相同ip的机器劫持或者占用

ssh服务工作原理和配置_服务端_04


使用第3台机器,配置和服务端相同的地址

ssh服务工作原理和配置_远程登录_05


使用客户端再次向192.168.224.163发起连接。

客户端检测到了远程主机的已经发生了改变,和原来不一样,所以发出了警告

客户端在第一次连接的时候,把服务端的公钥下载到了本地家目录 .ssh/known_hosts,由此发现现在连接的服务端已经不是原来的主机了

ssh服务工作原理和配置_ssh_06


ssh服务工作原理和配置_远程登录_07


禁止客户端首次连接的询问过程

ssh客户端配置文件:/etc/ssh/ssh_config

将下图 StrictHostKeyChecking ask,取消注释,改为no,将不显示检查指纹信息的提示

sed命令修改方法:sed -i.bak '/StrictHostKeyChecking/s/.*/StrictHostKeyChecking no/' /etc/ssh/ssh_config

ssh服务工作原理和配置_远程登录_08


ssh服务工作原理和配置_远程登录_09


ssh服务工作原理和配置_远程登录_10


ssh服务工作原理和配置_客户端_11



【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月19日 0

暂无评论

推荐阅读
  jnZtF7Co41Wg   2023年12月11日   14   0   0 nginx客户端服务端
  jnZtF7Co41Wg   2023年12月09日   15   0   0 客户端服务端数据
  jnZtF7Co41Wg   2023年12月10日   16   0   0 nginx客户端服务端NFS
  aYmIB3fiUdn9   2023年12月08日   38   0   0 客户端IPNATlvs