您的位置:首页 > 其它

密钥通信的原理

2015-06-28 17:59 465 查看
日期:2014年11月6日 17:13 星期四 农历 甲午 马年 闰九月十四

正文:

早两天小芳同学突然问我,如何实现scp的自动化呢?因为在scp的时候总会提示用户输入远程主机的密码,使得scp的自动化很麻烦。凭着隐约的一点经验,我貌似感觉到有秘钥登陆这种机制存在,于是有了彻底了解一下秘钥机制的动力。

经过学习了解到秘钥主要分为两种,一种是对称秘钥,例如说抗战片中的电报密码,通信双方加密解密都是用的同样一种加密解密方法,另外一种是非对称秘钥。非对称秘钥包含一个公钥与一个私钥,其中一把密钥加密,只能对另一个密钥来解密。

公钥是对外发布的,想给私钥持有者发信息的人都可以取得公钥,用公钥加密后,发送给私钥持有者,即使被拦截或者窃取,没有私钥的攻击者也无法获得加密信息,可以保证信息的安全传输。

先用私钥加密,再用公钥解密,这样可以完成对私钥持有者的身份认证。因为公钥只能解开私钥加密后的信息。下面即将讲解的scp、tftp登陆的例子就是应用了私钥加密公钥解密的身份认证的原理。

如果本地主机要与远程主机采用密码的方式通信,例如说scp、tftp等,如果远程主机上没有保存本地主机的公钥,那么只能采用密码验证的方式登陆。如果想要免密码登陆,就必须首先让远程主机信任自己,即把本地主机的公钥添加到远程主机的信任列表中。

秘钥通信的流程如下:(以scp通信为例)

(1)当本地主机发起向远程主机发起一个scp通信会话

(2)远程主机会检查一下本地是否有保存对端的公钥,如果有,会向本地主机随机发送一段文字

(3)本地主机接收到文字后用私钥对这段文字进行加密,并把加密后的文字发送给远程主机

(4)远程主机接收到加密后的文字后,用本地主机事先保存在远程主机上的公钥进行解密,解密后的文字如何与第二步中发送的一致,则认为对端是可信的。

回归主题,下面以实际例子讲解一下如何解决王芳同学的问题。

(1)在本地主机生成密钥

[test1@test1 Tools]$ ssh-keygen -b 1024 -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/home/test1/.ssh/id_rsa): 

Enter passphrase (empty for no passphrase): ----注:这个私钥密码有什么作用呢?主要是用来防止他人窃取私钥,导入导出的时候需要用私钥密码验证。就好如果他人窃取了数字证书,想要在其它电脑上使用这个数字证书,那么在导入这个证书的时候是需要密码的。

Enter same passphrase again: 

Your identification has been saved in /home/test1/.ssh/id_rsa.

Your public key has been saved in /home/test1/.ssh/id_rsa.pub.

The key fingerprint is:

62:09:ac:6b:7d:65:ed:7c:c1:67:63:b6:87:55:05:f6 test1@test1

[test1@test1 Tools]$ ls ~/.ssh

id_rsa  id_rsa.pub  known_hosts

(2)把公钥添加到远程主机的信任列表中

[test1@test1 Tools]$ cd ~/.ssh

[test1@test1 .ssh]$ ls

id_rsa  id_rsa.pub  known_hosts

[test1@test1 .ssh]$ ssh-copy-id -i id_rsa.pub test3@10.43.83.159

Password: 

Now try logging into the machine, with "ssh 'test3@10.43.83.159'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

[test1@test1 .ssh]$ 

(3)发起scp会话,测试一下是否不需要密码就可以copy了

[test1@test1 Tools]$ scp test3@10.43.83.159:/home/test3/Tools/SigStruct2XML/myIp.txt ./

myIp.txt                                                                                                                                      100%  350     0.3KB/s   00:00    

[test1@test1 Tools]$ 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: