对称与非对称密钥的区别及ssh服务原理详解

目录

对称加密和非对称加密的区别

ssh安全密码认证

认证详细步骤

认证原理

获取公钥的两种方法:

认证完成后


对称加密和非对称加密的区别

  • 对称式加密不太实用,由于加密和解密文件用的是同一个密码文件,所以一旦遗失密码文件,则就可以将所有传输信息进行解密
  • 非对称式加密,则会产生公钥和私钥,利用公钥的密码文件进行加密,必须使用私钥的密码文件进行解密,使用前需要将公钥发给对方或公开,对方使用公钥对内容进行加密,将加密后的文件发送过来,自己使用秘钥进行解密操作,非对称加密不仅增强了数据的安全性,还简化了密钥管理的复杂性‌
  • 对称加密更高效,适合处理大量数据,但要求密钥管理妥善。
  • 非对称加密更安全,但由于其复杂性,处理速度较慢,通常与对称加密结合使用,例如通过非对称加密交换对称加密的密钥。

ssh安全密码认证

使用ssh则不会使用明文传输,会进行非对称形式加密,所以推荐使用ssh协议

注:即使数据传输时,加密后的文件和公钥同事丢失也没有问题,因为加密后的文件智能通过私钥进行解密,拿到公钥只是拿到对文件进行加密的算法,并不能倒推出文件的内容,这就体现出ssh协议的安全性

认证详细步骤

ssh设置免密登录是采用了对称和非对称加密的方式,在登录时采用非对称加密形式,而登录后后续的命令操作会产生大量数据,所以采用对称加密会提高效率

  1. 客户登录时需要向服务器发送一条ssh命令请求登录
  2. 服务端会采用非对称加密的方式产生公钥和私钥,公钥发送到客户端机器上
  3. 使用密码进行登录,客户端输入的密码在公钥加持下生成加密文件,发送到服务端
  4. 服务端拿到密码文件后利用私钥进行解密,并进行查找对应的账号密码是否存在
  5. 用户认证校验通过后会返回登录结果,并返回随机会话口令
  6. 可以正常通信,随机会话口令的作用是:为后续命令以对称加密形式传输

认证原理

要进行测试和探究密码认证原理,需要准备两台机器

客户端(windows,linux)
windows上可以使用cmd,xshell等远程连接工具打开终端
还可以使用提供的工具,叫做git-bash工具,利用这个工具,打开的终端,能识别部分的linux命令,去操作你的windows
https://github.com/git-for-windows/git/releases/download/v2.46.0.windows.1/Git-2.46.0-64-bit.exe

#1.首次连接,需要用户自己确认机器的指纹信息,输入yes确认后

$ ssh root@10.0.0.61
The authenticity of host '10.0.0.61 (10.0.0.61)' can't be established.
ED25519 key fingerprint is SHA256:knW71otjGwcQfsgF5e6d33QEluIK2gigZsIvxY0Qhak.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?

#其中红色字体表示SHA256加密的公钥文件,可以通过下方办法进行检验

#2.服务端会发送公钥给客户端,记录到客户端的 ~/.ssh/knows_hosts,(通用于windows,linux),表示已知的服务器公钥信息

此时客户端,还未确认该指纹,就不会把服务端的公钥,写入到该文件中
你现在可以去比对,指纹是否一致
ssh-keygen扫描公钥
ssh-keyscan命令,在客户端操作,可以获取目标机器的公钥信息,扫描目标机器的公钥

在客户端进行公钥扫描操作
$ ssh-keyscan 10.0.0.61
# 10.0.0.61:22 SSH-2.0-OpenSSH_7.4
10.0.0.61 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIACCBz8czodMDmdAwKfciKtS4GGgPjaWjbDqQFVGmswL
# 10.0.0.61:22 SSH-2.0-OpenSSH_7.4
# 10.0.0.61:22 SSH-2.0-OpenSSH_7.4
10.0.0.61 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDmL7NHkix0xlyoShrYijy/81FmPNI4Zw4MkG+oIYeT/kk4u9bjcWlNgUpPQjyJ4FKt0LSZmUyB1WdbIHHYnAQ2LtlMGLQn52dBEaGOtl6//l8o9QlFDCdd/gRlC9cJxAAVU8nnkraxb6WCFlbYKSGjIbguyXClroxnxJ8Ek9Y3NFJSwwbCTHywp5O2rIRLajVDmOJVWTbK3apJ/lYaTMmrdd9Wvpv2G8J0I7CK2nIPipT15T5n+Sz2WOu4AJAUQRhe3xi6rVgYuQJ0PgLBpa6DEBP5ZzzJNK13SbGSo9BQClF7CnAkqKJFLo0/GUkzYaga1/qXCpbsLVDOX/URMPWz
# 10.0.0.61:22 SSH-2.0-OpenSSH_7.4
10.0.0.61 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKuOOhHiu+zJpN9Qmlvj1C9bWUg0TpNNFqkpSWfd3OfRIY9qMcemHzV2waxRVxWIvee3x18VRHvka82J+4reeu0=
# 10.0.0.61:22 SSH-2.0-OpenSSH_7.4

#需要查找到对应的公钥文件进行SHA256加密,然后就可以看到和登录时确认的指纹信息是一样的
[root@master-61 ~]# ls /etc/ssh/ssh*
/etc/ssh/ssh_config       /etc/ssh/ssh_host_ecdsa_key      /etc/ssh/ssh_host_ed25519_key.pub
/etc/ssh/sshd_config      /etc/ssh/ssh_host_ecdsa_key.pub  /etc/ssh/ssh_host_rsa_key
/etc/ssh/sshd_config.bak  /etc/ssh/ssh_host_ed25519_key    /etc/ssh/ssh_host_rsa_key.pub

#通过命令,对该公钥进行加密,得到指纹
[root@master-61 ~]# ssh-keygen -E SHA256 -lf /etc/ssh/ssh_host_ed25519_key.pub
256 SHA256:knW71otjGwcQfsgF5e6d33QEluIK2gigZsIvxY0Qhak no comment (ED25519)

#用户认证完成确认指纹信息后,客户端~/.ssh/known_hosts文件里就会进行记载服务端/etc/ssh/ssh_host_ed25519_key.pub公钥信息

获取公钥的两种方法:


#1.在客户端扫描该机器的公钥
$ ssh-keyscan 10.0.0.61
# 10.0.0.61:22 SSH-2.0-OpenSSH_7.4
10.0.0.61 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIACCBz8czodMDmdAwKfciKtS4GGgPjaWjbDqQFVGmswL
# 10.0.0.61:22 SSH-2.0-OpenSSH_7.4
# 10.0.0.61:22 SSH-2.0-OpenSSH_7.4
10.0.0.61 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDmL7NHkix0xlyoShrYijy/81FmPNI4Zw4MkG+oIYeT/kk4u9bjcWlNgUpPQjyJ4FKt0LSZmUyB1WdbIHHYnAQ2LtlMGLQn52dBEaGOtl6//l8o9QlFDCdd/gRlC9cJxAAVU8nnkraxb6WCFlbYKSGjIbguyXClroxnxJ8Ek9Y3NFJSwwbCTHywp5O2rIRLajVDmOJVWTbK3apJ/lYaTMmrdd9Wvpv2G8J0I7CK2nIPipT15T5n+Sz2WOu4AJAUQRhe3xi6rVgYuQJ0PgLBpa6DEBP5ZzzJNK13SbGSo9BQClF7CnAkqKJFLo0/GUkzYaga1/qXCpbsLVDOX/URMPWz
# 10.0.0.61:22 SSH-2.0-OpenSSH_7.4
10.0.0.61 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKuOOhHiu+zJpN9Qmlvj1C9bWUg0TpNNFqkpSWfd3OfRIY9qMcemHzV2waxRVxWIvee3x18VRHvka82J+4reeu0=
# 10.0.0.61:22 SSH-2.0-OpenSSH_7.4

#2.2.在服务端
[root@master-61 ~]# cat /etc/ssh/ssh_host_ed25519_key.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIACCBz8czodMDmdAwKfciKtS4GGgPjaWjbDqQFVGmswL

认证完成后

#1.首次连接,需要用户自己确认机器的指纹信息,输入yes确认后即可认证完成
此时服务端会发送公钥给客户端,记录到客户端的 ~/.ssh/knows_hosts
ssh root@10.0.0.61

#2.查看客户端记录的 cat  ~/.ssh/known_hosts  ,记录了服务端的公钥信息
$ cat ~/.ssh/known_hosts
10.0.0.61 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIACCBz8czodMDmdAwKfciKtS4GGgPjaWjbDqQFVGmswL
10.0.0.61 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKuOOhHiu+zJpN9Qmlvj1C9bWUg0TpNNFqkpSWfd3OfRIY9qMcemHzV2waxRVxWIvee3x18VRHvka82J+4reeu0=

这个字符串,就是你要连接的linux机器的公钥信息


在linux服务端,看到了基于ssh 密码认证的,公私钥文件信息
[root@master-61 ~]# ls /etc/ssh/ | grep ed25519
ssh_host_ed25519_key
ssh_host_ed25519_key.pub

查看公钥
[root@master-61 ~]# cat /etc/ssh/ssh_host_ed25519_key.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIACCBz8czodMDmdAwKfciKtS4GGgPjaWjbDqQFVGmswL


[root@master-61 ~]# cat /etc/ssh/ssh_host_ed25519_key
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACAAggc/HM6HTA5nQMCn3IirUuBhoD42lo2w6kBVRprMCwAAAIi36HVyt+h1
cgAAAAtzc2gtZWQyNTUxOQAAACAAggc/HM6HTA5nQMCn3IirUuBhoD42lo2w6kBVRprMCw
AAAEA0HpVhUPBtxkisfC+w98VSrPXZrAYVcHoFEAvjLFf22ACCBz8czodMDmdAwKfciKtS
4GGgPjaWjbDqQFVGmswLAAAAAAECAwQF
-----END OPENSSH PRIVATE KEY-----

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值