原创

浅谈SSH那些事儿

1 SSH起源

传统的网络服务程序,比如FTP,POP,Telnet,本质上都是不安全的,因为它们在网络上用明文传送数据、用户账号和用户口令,很容易受到中间人攻击方式的攻击,攻击者会冒充真正的服务器接收用户传给服务器的数据,然后再冒充用户把数据传给真正的服务器。

为了满足安全性的需求,IETF的网络工作小组制定了Secure Shell(缩写为SSH),这是一项创建在应用层和传输层基础上的安全协议,为计算机上的Shell提供安全的传输和使用环境。

SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄漏问题。通过SSH可以对所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。

2 SSH工作原理

首先需要了解常用的加密方式:
(1) 对称加密(也称为密钥加密)
(2) 非对称加密(也称公钥加密)
首先谈一下什么是对称加密,如图所示,对称加密通俗来说就是客户端和服务端共享同一份密钥,客户端用加密算法将重要信息加密,服务端再用相同的加密算法进行解密。若信息一致,则完成验证。

显然,这种加密方式存在着一定的弊端,服务器需要保存数以万计的密钥文件,一旦泄露将造成巨大的灾难,由此非对称加密方式就应运而生。如下图所示,非对称方式需要两种密钥,公钥只能用于加密,而只有私钥才能用于解密,且私钥只在服务端存在,相对来说传输的安全性得到了有效地提高。

但是即使这样,也不是绝对安全的,如下图所示,也存在着网络攻击的可能。黑客可以在拦截用户的登陆请求,从而获取用户真实的账号密码。

SSH为解决上述问题,采用了以下方案:

  1. 基于口令的认证
    为确保连接安全,客户端第一次连接时会弹出公钥确认信息。

    输入yes后会提示以下信息
  2. 基于公钥认证
    由于每次都输入密码验证很麻烦,还派生出一种基于公钥的认证方式,可以免去密码认证。

    1.Client将自己的公钥存放在Server上,追加在文件authorized_keys中。
    2.Server端接收到Client的连接请求后,会在authorized_keys中匹配到Client的公钥pubKey,并生成随机数R,用Client的公钥对该随机数进行加密得到pubKey®
    ,然后将加密后信息发送给Client。
    3.Client端通过私钥进行解密得到随机数R,然后对随机数R和本次会话的SessionKey利用MD5生成摘要Digest1,发送给Server端。
    4.Server端会也会对R和SessionKey利用同样摘要算法生成Digest2。
    5.Server端会最后比较Digest1和Digest2是否相同,完成认证过程。

3 总结

SSH给出了优于Telnet的解决方案,并沿用至今,足以显示它的优越性。我们只有每天学一点,多一点,才能进步!

正文到此结束
本文目录