对SSH的了解

最近配置Hadoop涉及了ssh,当时不知道是什么东西,只能照做,不懂原理,导致配置过程出现弯路,现在了解一下。

SSH的定义

SSH为Secure Shell的缩写,由IETF的网络工作小组(Network Working Group)所制定;SSH为建立在应用层传输层基础上的安全协议。

传统的网络服务程序,如FTPPOPTelnet其本质上都是不安全的;因为它们在网络上用明文传送数据、用户帐号和用户口令,很容易受到中间人(man-in-the-middle)攻击方式的攻击。就是存在另一个人或者一台机器冒充真正的服务器接收用户传给服务器的数据,然后再冒充用户把数据传给真正的服务器。

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

SSH之另一项优点为其传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、POP、甚至为PPP提供一个安全的“通道”。(选自wiki百科http://zh.wikipedia.org/wiki/SSH

说明ssh前,说明一下相关的知识。

数字签名

数字签名是对信息的发送者发送信息真实性的一个有效证明。就是可以证明这条信息或数据是你发出的,并不是他人伪造出来的。

大致情况如下:

前提条件:用户有主机的公钥且不是伪造的

主机的步骤:

  1. 主机将数据通过hash函数生成一个摘要。
  2. 将摘要通过密钥生成一个数字签名。
  3. 将数字签名附在数据中一个发给用户。

image

用户步骤:

  1. 使用主机的公钥对数字签名进行解密。
  2. 解密成功证明此数据为主机发出。PS:因为私钥是只能是主机拥有的,主机的公钥能成功解密的数据,只能是用主机的私钥加密的数据
  3. 通过hash函数将数据生成摘要,经对比,摘要相同,证明数据内容未被修改过。PS:修改过后,摘要肯定不一样的

数字证书

之前说数字签名时候有个前提条件,为用户有主机的公钥且不是伪造的。就是说当用户拥有的公钥为伪造的时候,即不是原来那台主机了,那么数字签名有和没有一个样啦。因此,才有必要使用数字证书。

数字证书一种权威性的电子文档,由权威公正的第三方机构,即CA中心签发的证书。简单来说,就是用来证明主机的公钥是真实的,不是伪造的。

将主机的信息和主机的公钥通过ca的私钥生成的东西就是数字证书。

image

用户只需要ca的公钥将数字证书解密后,得到正确的主机的信息和公钥,再使用公钥来打开数字签名。

数据加密:公钥加密,私钥解密

身份认证:私钥加密,公钥解密

公钥私钥

配置SSH过程中有出现公钥私钥,如为了免密码登陆就会生成公钥私钥来使用。公钥/私钥是非对称密钥加密系统,公钥是公开的, 私钥是私人不公开的,这个安全性的关键点在于密钥的保密性。公钥是用来加密,而私钥是用来解密,不过相反也可以,那时公钥就是私钥,私钥就是公钥。

ssh-keygen -t rsa
运行此命令会在目录$HOME/.ssh下生成两个文件:id_rsa.pub和id_rsa,id_rsa.pub为公钥,id_rsa为私钥。
ssh-copy-id user@host
将公钥复制到远程主机上

ssh登陆

大致登陆情况应该是这样子的:

image

  • 他人的公钥会被保存在$HOME/.ssh/authorized_keys文件中

可能发生的情况:如果用户请求被人截取,并冒充远程主机,将假的公钥发送给用户,用户的密码将会被骗取。用户是无法辨别出真假的,ssh公钥是没有证书中心认定,不像https协议哪样,这就是中间人攻击。

学习资料:http://www.ruanyifeng.com/blog/2011/12/ssh_port_forwarding.html

posted @ 2012-08-02 21:18  叶~~  阅读(398)  评论(0编辑  收藏  举报