zoukankan      html  css  js  c++  java
  • SSH

    1,SSH简介

    SSH为secure shell的缩写,SSH为创建在应用层和传输层基础上的安全协议。传统的网络服务程序,如FTPPOPTelnet其本质上都是不安全的。因为它们在网络上用明文传送数据、用户帐号和用户口令,很容易受到中间人(man-in-the-middle)攻击方式的攻击。所谓"中间人"的攻击方式,就是"中间人"冒充真正的服务器接收你的传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被"中间人"一转手做了手脚之后,就会出现很严重的问题。而SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。SSH之另一项优点为其传输的数据是经过压缩的,所以可以加快传输的速度。,2,SSH的验证机制 

    从客户端来看,SSH提供两种级别的安全验证。
    第一种级别(基于口令的安全验证),只要你知道自己的帐号和口令,就可以登录到远程主机,并且所有传输的数据都会被加密。但是,这种验证方式不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到"中间人"这种攻击方式的攻击。
    第二种级别(基于密匙的安全验证),需要依靠密匙,也就是你必须为自己创建一对密匙,并把公有密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在你在该服务器的用户根目录下寻找你的公有密匙,然后把它和你发送过来的公有密匙进行比较。如果两个密匙一致,服务器就用公有密匙加密"质询"(challenge)并把它发送给客户端软件。客户端软件收到"质询"之后就可以用你的私人密匙解密再把它发送给服务器。
    与第一种级别相比,第二种级别不需要在网络上传送用户口令。另外,第二种级别不仅加密所有传送的数据,而"中间人"这种攻击方式也是不可能的(因为他没有你的私人密匙)。但是整个登录的过程可能慢一些。[2]

    (上面这一段说的很不清楚,但是网上中文资料关于SSH的验证说明大部分都是这么讲的,等以后有时间再去仔细研究一下,ssh的验证机制还是挺复杂的~)

    3,密钥的产生

    ssh-keygen可以用来产生密钥对,也就是一个公共密钥(public key),一个私有密钥(private key)。这原是一个unix下的工具。

    4,密钥的管理

    ssh-agent is a program that used together with OpenSSH or similar SSH programs provides a secure way of storing the private key.公钥是不需要管理的。受管理的私钥通过ssh-add来添加。

    参考:

    [1] ssh密钥认证原理:http://sapling.me/unixlinux/ssh-privatekey-authentication.html

    [2] 百度百科 ssh

    [3] ssh-keygen:http://en.wikipedia.org/wiki/Ssh-keygen

    [4] ssh-agent http://en.wikipedia.org/wiki/Ssh-agent

     

     

  • 相关阅读:
    HDU 2553 N皇后问题
    HDU 2553 N皇后问题
    HDU 1045 Fire Net
    HDU 1045 Fire Net
    HUD 1175 连连看
    HUD 1175 连连看
    poj3190 Stall Reservations (贪心+优先队列)
    poj3190 Stall Reservations (贪心+优先队列)
    ThinkPHP 模板截取字符串 【转载】
    鼠标位置距浏览器窗体距离
  • 原文地址:https://www.cnblogs.com/naniJser/p/2751637.html
Copyright © 2011-2022 走看看