跳到主要内容

SSH 简介

SSH (Secure Shell) 用来在绝对不安全的网络环境中创建相对安全的隧道,实现 SSH 客户端和服务器之间的连接。

SSH 仅是一种加密的网络传输协议,其具体的实现有很多:有开源实现的 OpenSSH,也有商业实现方案。开源的 OpenSSH 使用范围最广泛 (所有操作系统的默认组件)。

OpenSSH

OpenSSH 是使用 SSH 协议进行远程登录的首要连接工具。它加密所有流量以消除窃听、连接劫持和其他攻击。

OpenSSH 提供了大量的安全隧道功能、多种身份验证方法和复杂的配置选项。

OpenSSH 套件包含以下工具:

  • 远程操作使用 ssh、 scpsftp 完成。
  • 使用 ssh-add、ssh-keysign、 ssh-keyscan 和 ssh-keygen 进行密钥管理。
  • 服务端由 sshd、 sftp-server 和 ssh-agent 组成。

工作方式

  1. 客户端生成密钥对 (公钥、私钥);
  2. 客户端将公钥存放在服务端 (使用本地计算机上的私钥文件进行身份验证);
  3. 服务端接收到客户端连接请求,将使用匹配到的客户端公钥生成和加密随机数并发送给客户端;
  4. 客户端通过私钥解密,将随机数和本次会话 Session Key 通过 MD5 生成摘要发送给服务端;
  5. 服务端对随机数和本次会话 Session Key 采用同样摘要算法生成摘要;
  6. 服务端对两个摘要值进行比较,如果匹配,则证明客户端拥有私钥并且客户端已通过身份验证。

Questions

  1. 列举应用 SSH 的场景?
  2. 什么是中间人攻击?
  3. 什么是密钥?公钥、私钥各有什么用途?
  4. 什么是公钥指纹?有什么用途?

Resources