密码学

对称加密算法

  • 概念:加密和解密使用同一个公钥
  • 遇到的问题:密钥的传输问题
  • diffie-hellman算法:在不直接传递密钥的情况下实现加解密

非对称加密算法

  • 加密解密使用不同的规则:公钥加密,私钥解密
(1)乙方生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得,私钥则是保密的。
(2)甲方获取乙方的公钥,然后用它对信息加密。
(3)乙方得到加密后的信息,用私钥解密。
  • 通信过程:甲乙知道对方的公钥,在通信时使用对方的公钥加密,将消息发送到对方后,对方使用各自的私钥解密得到信息

ssh 登录过程

1 口令登录

  1. 建立连接时得到远程主机的公钥
  2. 输入密码,使用公钥加密,发送给远程主机
  3. 远程主机使用自己的私钥解密,得到密码,进行比对,如果正确则登入成功
  • 中间人攻击:冒充远程主机发送自己的公钥,获取密码
  • 应对中间人攻击:比对远程主机的哈希值,确认后再输入密码
    被信任的远程主机的公钥存储在 .ssh 目录下的 known_hosts 文件中

2 公钥登录(可以免输密码)

  1. 将自己的公钥添加到远程主机的 authorized_keys 文件中
  2. 建立连接时,远程主机发送一串随机字符到本机
  3. 本机使用私钥加密该串字符,然后发送给远程主机
  4. 远程主机使用已经保存的公钥解密,如果解密得到原字符串则建立连接

RSA的特点:公钥加密的,用私钥可以解密,私钥加密的用公钥可以解密

3 具体操作

  • ssh配置文件:/etc/ssh/sshd_config 里面可以修改端口号
  • 启动 ssh 服务:service sshd restart
  • 口令登录:ssh -p 22 [email protected] 输入密码登录,默认是22端口,因此不需要 -p 22 也行
  • 公钥登录:不需要输入密码,直接就登录了

SSH 工具使用

1 生成密钥

ssh-keygen -t rsa -f ~/.ssh/id_rsa -P "" -C "pc_e420"

  • -P 使用密码对私钥加密, "" 为不对私钥加密
    对于之前没有加密的私钥, 使用 -p -N 12345 加密, 密码为12345
  • -f 指定输出的私钥的文件名, 公钥文件名自动生成为私钥名+.pub
  • -C 添加密钥说明

2 向主机添加公钥, 实现免密码登录

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

  • 如果使用加密的私钥, 登录的时候会要求输入私钥加密的密码

你可能感兴趣的:(密码学)