本帖最后由 ecithy 于 2016-2-24 15:14 编辑
【密钥对的工作原理】
密钥对是指公钥加密(或者非对称加密)的加密算法,比如RSA和DSA等,这类算法使用一对密钥即公钥和私钥。其中,公钥可以随便分发,只用于加密,私钥则只由一人持有,只用于解密。任何用公钥加密的信息,用私钥解密后即可得到原来的信息。
RSA密钥对的工作原理如下:
假设两个用户A,B进行通信,A和B都要产生一对用于加密和解密的公钥和私钥,A的公钥和私钥分别为publicA和privateA,B的公钥和私钥分别为publicB和privateB。
(1)A和B要相互发送信息,所以彼此要交换公钥,A的公钥告诉B,B的公钥告诉A。但是私钥保密,只是自己拥有。
(2)A向B发送信息,明文为x 。
A用B的公钥对明文x进行加密形成密文publicB(x),然后传输密文给B;
B收到密文,用B的私钥对密文进行解密privateB(c(x)),得到要通信的明文x。
(3)B向A发送信息,明文为y 。
B用A的公钥对明文y进行加密形成密文publicA(y),然后传输密文给A;
A收到密文,用A的私钥对密文进行解密privateA(c(x)),得到要通信的明文y。
总之:
1.用接收方的公钥来加密传输方的信息,接收方的私钥来解密传输方的信息,拥有密钥对的一方是接受方或要登陆到对方机器的一方。
2.为了方便记忆:把公钥比作锁,私钥比作钥匙,那么发送方只有锁,接受方同时有锁和钥匙。
【实例】
两台linux密钥验证登陆hyB:192.168.11.7
先关闭被登录的linux机器的selinux
临时关闭selinux: setenforce 0
永久关闭,编辑 /etc/selinux/config 把SELINUX=enforcing改为SELINUX=disabled 然后重启Linux
在A上执行:
[root@hyA ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): #输入密码
Enter same passphrase again: #再次输入密码
Your identification has been saved in /root/.ssh/id_rsa. #私钥存放在本地即A/root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub. #公钥存放在本地即A/root/.ssh/id_rsa.pub
The key fingerprint is:
a6:8b:41:74:dc:27:03:8c:9f:f6:5b:9d:b5:40:e2:f2 root@hyA
The key's randomart image is:
+--[ RSA 2048]----+
| o. |
| ...o . . |
| ..o.+..o |
| . .+ .+. . . |
| .. .So . + . |
| . o. E o . |
| . . o |
| o .. |
| . . |
+-----------------+
[root@hyA ~]# cat .ssh/id_rsa.pub #查看公钥
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtJRZnkzna4W/9ukd2CbTEYHzs4umy44kcpRv2KX6+/f5qujsW8VpJPPCdkz5G6wQAs8mGkuPZyWKRTsO8Am421lFumFXn+DayXE9I6yrgM58B/FLAJjs18vUWHuZKvqifX3bbnb7bL1/wde60WXmRr4bXOO2Phi+v9iosrvcpA9/OCoopItNssYhG1qkwD7c+Jjg+YqdXU4NuatuNppVUKC0U38xAt4kP0n5YGxewPcr8Z0gqEgE3ka3T3OVAsDQCLU+Fj00W9xq2+wb8yXeoVdIZoBRth6VylOJNR1rbnrmc7Vgj2e//6sRbhPEWFWMkhyhFAPKgYCqsJ5MBxIRWw== root@hyA
在B上执行:
[root@hyB ~]# mkdir /root/.ssh
[root@hyB ~]# chmod 700 /root/.ssh
[root@hyB ~]# vi /root/.ssh/authorized_keys #添加公钥
[root@hyB ~]# chmod 600 !$
[root@hyA ~]#yum -y install openssh-clients #安装ssh
A上连接B
ssh root@hyB的ip
【密钥对的工作原理】
密钥对是指公钥加密(或者非对称加密)的加密算法,比如RSA和DSA等,这类算法使用一对密钥即公钥和私钥。其中,公钥可以随便分发,只用于加密,私钥则只由一人持有,只用于解密。任何用公钥加密的信息,用私钥解密后即可得到原来的信息。
RSA密钥对的工作原理如下:
假设两个用户A,B进行通信,A和B都要产生一对用于加密和解密的公钥和私钥,A的公钥和私钥分别为publicA和privateA,B的公钥和私钥分别为publicB和privateB。
(1)A和B要相互发送信息,所以彼此要交换公钥,A的公钥告诉B,B的公钥告诉A。但是私钥保密,只是自己拥有。
(2)A向B发送信息,明文为x 。
A用B的公钥对明文x进行加密形成密文publicB(x),然后传输密文给B;
B收到密文,用B的私钥对密文进行解密privateB(c(x)),得到要通信的明文x。
(3)B向A发送信息,明文为y 。
B用A的公钥对明文y进行加密形成密文publicA(y),然后传输密文给A;
A收到密文,用A的私钥对密文进行解密privateA(c(x)),得到要通信的明文y。
总之:
1.用接收方的公钥来加密传输方的信息,接收方的私钥来解密传输方的信息,拥有密钥对的一方是接受方或要登陆到对方机器的一方。
2.为了方便记忆:把公钥比作锁,私钥比作钥匙,那么发送方只有锁,接受方同时有锁和钥匙。
【实例】
两台linux密钥验证登陆hyB:192.168.11.7
先关闭被登录的linux机器的selinux
临时关闭selinux: setenforce 0
永久关闭,编辑 /etc/selinux/config 把SELINUX=enforcing改为SELINUX=disabled 然后重启Linux
在A上执行:
[root@hyA ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): #输入密码
Enter same passphrase again: #再次输入密码
Your identification has been saved in /root/.ssh/id_rsa. #私钥存放在本地即A/root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub. #公钥存放在本地即A/root/.ssh/id_rsa.pub
The key fingerprint is:
a6:8b:41:74:dc:27:03:8c:9f:f6:5b:9d:b5:40:e2:f2 root@hyA
The key's randomart image is:
+--[ RSA 2048]----+
| o. |
| ...o . . |
| ..o.+..o |
| . .+ .+. . . |
| .. .So . + . |
| . o. E o . |
| . . o |
| o .. |
| . . |
+-----------------+
[root@hyA ~]# cat .ssh/id_rsa.pub #查看公钥
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtJRZnkzna4W/9ukd2CbTEYHzs4umy44kcpRv2KX6+/f5qujsW8VpJPPCdkz5G6wQAs8mGkuPZyWKRTsO8Am421lFumFXn+DayXE9I6yrgM58B/FLAJjs18vUWHuZKvqifX3bbnb7bL1/wde60WXmRr4bXOO2Phi+v9iosrvcpA9/OCoopItNssYhG1qkwD7c+Jjg+YqdXU4NuatuNppVUKC0U38xAt4kP0n5YGxewPcr8Z0gqEgE3ka3T3OVAsDQCLU+Fj00W9xq2+wb8yXeoVdIZoBRth6VylOJNR1rbnrmc7Vgj2e//6sRbhPEWFWMkhyhFAPKgYCqsJ5MBxIRWw== root@hyA
在B上执行:
[root@hyB ~]# mkdir /root/.ssh
[root@hyB ~]# chmod 700 /root/.ssh
[root@hyB ~]# vi /root/.ssh/authorized_keys #添加公钥
[root@hyB ~]# chmod 600 !$
[root@hyA ~]#yum -y install openssh-clients #安装ssh
A上连接B
ssh root@hyB的ip
编辑回复