初识SSH
工作中涉及维护几百台编译服务器,利用 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 协议涉及的内容主要有如下三点:
- 认证
使用 SSH 登陆,必须提供数字身份证明。通过就登陆,否则拒绝连接。 - 加密
对数据进行编码(加密),除数据接受者之外,其他任何人都无法理解。 - 完整性
数据在传输过程中没有被改变。若黑客篡改数据,SSH 能检测出变化。
使用 ssh 之前,你可以在网上查阅资料,或者在本地查看具体用法。
$ man ssh