你知道『SSH』为什么安全吗
# 前言
本文将会主要从 SSH(Secure Shell,安全外壳协议) 产生的历史因素,进而详细探讨 SSH 远程登录和远程通信安全原理,以及身份验证机制和网络协议等功能,来解释 SSH 为什么安全,并且也会给出相关提高 SSH 安全性的配置建议
# 历史
我们知道历史上网络主机之间的通信是不加密的,属于明文通信,这样使得通信很不安全,当我们在使用服务器登录的时候,需要将用户输入的密码传给服务器,这样会直接泄露用户信息,非常可怕,此时广泛用于远程服务器登录的协议为 Telnet (opens new window)
因此 1995 年芬兰赫尔辛基工业大学的研究员 Tatu Ylönen 研发出了的第一款 SSH 协议(SSH1),可以替换 rlogin、TELNET、FTP 和 rsh 这些不安全的协议,防止被嗅探,中间人攻击
其中 SSH 的软件架构是服务器-客户端模式(Server - Client),其中 OpenSSH (opens new window) 为使用最广泛的开源 SSH 连接工具,OpenSSH 主要包含如下套件:
- 远程操作:
ssh、scp、sftp
- 密钥管理:
ssh-add、ssh-keysign、ssh-keyscan、ssh-keygen、ssh-copy-id
- 服务器:
sshd、sftp-server、ssh-agent
本章的 SSH 历史概述就讲到这里,但是本文也不会讲解细致的 SSH 安装、配置和指令等详细流程,如果您有需求可以自行查找,下面将会开始本文的主要内容,也就是讲解为什么 SSH 可以保障我们远程服务器登录安全
# 协议解析
我们知道 SSH 协议的工作方式是采用 CS 模式,SSH client 通过和 SSH server 建立链接来进行工作
SSH client 发起链接,并通过 SSH server 的公钥来进行服务器身份的验证。接下来在通过协商使用强对称加密和散列算法,以确保在客户端和服务器之间交换的数据的私密性和完整性
在SSH协议流行后,其被转交到了IETF进行标准化,作为互联网标准,SSH协议有以下几个RFC文档组成
# 基于口令
我们知道 SSH 默认方式就是基于口令(基于密码)