工作中涉及维护几百台编译服务器,利用 ssh 保护网络必不可少。最近阅读了ssh 权威指南,写一篇文章与大家分享一下,如何利用 ssh 保护网络的安全。

为什么需要 SSH?

  互联网初期,传统网络应用程序中,用于远程登录的 rlogin 、telnet ;用于远程执行命令的 rsh ;用于文件传输的 rcp 、ftp ,都有一个可悲的隐患-安全性
  传统网络应用程序,在网络通信时用户名、密码、数据、文件等都是以明文的形式传输,一旦被黑客截取,内容一览无余。

  如何预防这些安全隐患?这就是 SSH 的诞生背景。

什么是 SSH?

  SSH(Secure Shell)是一种协议标准/网络安全性解决方案。

SSH 虽然叫做 Secure Shell ,但是它并不像 Bourne Shell 、C Shell 一样是一种真正意义上的 Shell 。SSH 并不是一个命令解释器,也不提供通配符扩展、命令历史记录等功能。

  每次使用 SSH 进行网络通讯时,SSH (客户端)对传输数据进行加密,发送到服务器,再由 SSH (服务端)进行解密。整个过程透明,对用户无感知。
  SSH 在本地(客户端)和远程(服务端)计算机之间使用端到端的加密,创建一个加密的网络连接通道,从而进行加密数据的传输。

  SSH 使用现代的加密算法,足以胜任很多互联网公司应用程序的要求。其具体的实现有很多,既有开源实现的 OpenSSH ,也有商业实现方案。使用范围最广泛的当然是开源实现 OpenSSH 。文章默认采用开源的 OpenSSH 来举例

  SSH 协议涉及的内容主要有如下三点:

  1. 认证
      使用 SSH 登陆,必须提供数字身份证明。通过就登陆,否则拒绝连接。
  2. 加密
      对数据进行编码(加密),除数据接受者之外,其他任何人都无法理解。
  3. 完整性
      数据在传输过程中没有被改变。若黑客篡改数据,SSH 能检测出变化。

  使用 ssh 之前,你可以在网上查阅资料,或者在本地查看具体用法。

    $ man ssh