SSH 远程登录
SSH 已经可以说是一个计算机工程师的计算机所必备的配置了。它主要的用途是登陆到远程电脑中执行命令。在今天这个云开发的时代,它几乎是每个程序员每天都要用到的工具。
介绍
SSH 叫安全外壳协议(Secure Shell),是一种加密的网络传输协议,可以在不安全的网络环境下提供安全的传输环境。早期计算机网络都是明文通信,这导致任何人都可以截获消息,甚至伪造消息。1995年,芬兰学者 Tatu Ylonen 设计了 SSH 协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为所有操作系统的标准配置。
前置知识
SSH 是一种加密协议,因此在介绍其基本使用方法之前,我们需要先学习一些密码学的基本概念:
- 明文 plaintext:信息原先的样子,发送方想要让接收方收到的实际信息。
- 密文 ciphertext:明文被加密之后的样子,接收者在没有额外线索的情况下,很难从中还原出明文。
- 密钥 key:可以理解成密文中的“额外线索”,发送者要用密钥把明文加密成密文,而接收者要用密钥把密文还原为明文。
- 私钥 private key:私有的密钥,除了使用者自己之外不能被任何人得知。
- 公钥 public key:公共的密钥,任何人都可以获取。
对称加密
对称加密指的是加密和解密使用的是同一个密钥。比较常用的对称加密算法有 AES,DES 等,但本篇文章不对它们的具体原理进行介绍,感兴趣的同学可以自行查阅。
对称加密的示意图如下:
发送者 sender 提供明文 plaintext 和密钥 key。首先使用 key 按照某种算法加密 plaintext 为密文 ciphertext,随后发送者通过网络 network 发送 ciphertext。接收者与发送者提前约定好了算法的形式,并且统一了密钥 key,因此接收者 reciver 可以提供 key 对从网络中接收到的 ciphertext 进行解密,还原回 plaintext,就可以得到发送者实际上想发送的明文内容。
如果出现窃听者或中间人,因为他们并没有密钥 key,因此就算在 network 中截获了 ciphertext,也很难还原为 plaintext。
对称加密的主要优势是效率高、开销小。但是双方需要交换 key 并确认算法的行为并不是很灵活,也并没有那么安全。特别是在多用户情景下,服务器需要保存每个可能会登陆的用户的 key,还要避免这些 key 泄漏。
非对称加密
相比于对称加密,非对称加密在网络通信中更常用。非对称加密需要一对密钥来实现加密和解密。公开的密钥叫公钥,私有的密钥叫私钥。非对称加密算法确保了:
- 公钥用于加密消息
- 私钥用于解密消息
在一次通讯中,公钥和私钥都由接收方提供。
比较常用的非对称加密算法有 RSA 等。这里同样不对其原理进行介绍,感兴趣的同学可以自行查阅。
非对称加密的示意图如下:
Reciver 将 public key 公开,Sender 可以使用常规网络通讯手段获取 public key,无需担心 public key 泄漏,这是因为public key只能用于加密信息,不能用于解密信息。Sender 获取 public key 后,会使用 public key 将 plaintext 加密为 ciphertext,随后将其通过网络发送给 Reciver。Reciver 收到 ciphertext 后,会使用 private key 解密。
任何人都可以获取 public key,使得任何人都可以进行加密行为,但是这毫无意义。攻击者需要的是解密。这种设计免去了密钥交换的步骤,而密钥交换在互联网中其实是一个根本不可能的事情:你怎么防止你发送的密钥信息被别人窃听呢?
SSH 基本使用方法
安装 OpenSSH
不出意外的话,windows 上已经安装了 ssh 的客户端。
生成公钥与私钥
SSH 属于非对称加密。因此其需要通讯双方各自有一对密钥对。作为
正在加载评论...