SSH协议原理

SSH

  • SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议
  • 监听22端口

建立SSH连接

  • 第一阶段:协议版本协商
    • 明文传输
  • 第二阶段:算法协商
    • 公钥算法列表、加密算法列表、消息验证码算法列表、压缩算法列表等
  • 第三阶段:认证阶段
    • 第一次通过SSH连接服务器时服务器会发送公钥给客户端
      • 保存在~/.ssh/known_hosts
    • 方法一:密码登陆
      • 客户端使用服务器的公钥加密后发送给服务器,服务器使用私钥解密
    • 方法二:公钥认证登陆
      • 将客户端的公钥复制到服务器~/.ssh/authorized_keys 文件中
      • 原理
        • 服务端用客户端的公钥加密一个 256 位的随机字符串
        • 客户端接收后使用自己的私钥解密,然后将这个字符串和会话 id 合并在一起,对结果应用 MD5 散列函数并把散列值返回给服务器
        • 服务器进行相同的 MD5 散列函数处理,如果客户端和该值可以匹配,那么认证成功,允许登陆

中间人攻击

  • 如果攻击者插在用户与远程主机之间(比如在公共的 wifi 区域),用伪造的公钥,获取用户的登录密码。再用这个密码登录远程主机,那么 SSH 的安全机制就荡然无存了。这种风险就是中间人攻击
  • 虽然 SSH 从原理上不能抵御中间人攻击,但 SSH 首次连接会下载服务端的公钥,并提示服务器的公钥指纹,用户可以核对此指纹与服务器公钥生成的指纹是否一致
  • 下次访问时客户端将会核对服务端发来的公钥和本地保存的是否相同,不同就发出中间人攻击的警告拒绝连接
  • 结论:如果首次连接没有中间人,之后的连接就无需担心中间人

OpenSSH

  • 服务名:sshd
  • 服务端主程序:/usr/sbin/sshd
  • 客户端主程序:/usr/bin/ssh
  • 服务端配置文件:/etc/ssh/sshd_config
  • 客户端配置文件:/etc/ssh/ssh_config
  • 每个用户的配置文件: ~/.ssh

SFTP

  • SFTP是借助临时SSH加密的FTP
    • FTP是File Transfer Protocol(文件传输协议)的英文简称
  • 没有单独的守护进程,可以看做是ssh服务文件传输方案。和ssh一样,使用22端口
  • 可以断点续传,小文件用scp,大文件用sftp
发布了161 篇原创文章 · 获赞 19 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/winter_wu_1998/article/details/103638011