1.非对称加密与数字签名
a.非对称加密
在非对称加密中有不同的密钥:私钥(private key)和公钥(public key)。如果A和B进行通信,A需要创建两个密钥:一个私钥和一个公钥,A把公钥分发给社区,公钥不需要保密(但需要提供身份验证和数据完整性,防止他人冒充A)。B向A发送信息是用A的公钥加密明文,A收到后可用自己的密钥解密.
________________________________________________________________________
| A | | B |
| | | |
| A的私钥 | 不安全信道 | A的公钥 |
|明文<---------密文 |<-----------------------------|密文<-----------明文 |
| | | |
|__________________|______________________________|____________________|
b.数字签名
数字签名用于验证消息发送者信息,当A向B发送消息是,B需要检查发送者(A)的身份,这时A可以用自己的私钥进行签名,B可用A的公钥进行验证。
2.对应ssh命令
a.登陆远程主机
远程登陆主机"host"时,在本地输入命令(host_name可以是主机的ip地址):
$ ssh user_name@host_name
请求登陆host,这时会询问是否接受host的公钥,接收后会要求输入你的登陆密码,输入的密码会用host的公钥进行加密,host接收加密后的登陆信息后,会用自己的私钥解密,确认后会允许登陆。这样你的登陆信息就不会泄露给他人(即便被他人截获登陆信息,但无host私钥,所以无法获得你的登陆信息)。
b.生成自己的公钥与私钥
在本地输入命令:
$ ssh-keygen
会在在目录~/.ssh
中生成私钥: id_rsa
, 公钥: id_rsa.pub
。
c.上传公钥与免密码登陆(数字签名)
输入命令上传公钥到host:
$ ssh-copy-id user_name@host_name
host会最后一次要求你输入密码确认身份,密码正确后会将公钥加到host的/home/user_name/.ssh/authorized_keys
文件中,此后你再次登陆时,host会向你发送信息,你用自己的私钥进行数字签名后发送给host,host用你的公钥进行验证,验证成功后会允许登陆,不需要输入密码。