IT评测·应用市场-qidao123.com技术社区

标题: ssh 非对称加密 [打印本页]

作者: 梦见你的名字    时间: 2024-8-2 10:19
标题: ssh 非对称加密
ssh 非对称加密

ssh服务端的配置文件目录

  1. 在/etc/ssh
  2. ll /etc/ssh目录下有三对非对称的公钥和私钥
  3. 第一对:
  4. -rw-r-----. 1 root ssh_keys    480 5月   9 19:33 ssh_host_ecdsa_key
  5. -rw-r--r--. 1 root root        162 5月   9 19:33 ssh_host_ecdsa_key.pub
  6. 第二对
  7. -rw-r-----. 1 root ssh_keys    387 5月   9 19:33 ssh_host_ed25519_key
  8. -rw-r--r--. 1 root root         82 5月   9 19:33 ssh_host_ed25519_key.pub
  9. 第三对
  10. -rw-r-----. 1 root ssh_keys   2578 5月   9 19:33 ssh_host_rsa_key
  11. -rw-r--r--. 1 root root        554 5月   9 19:33 ssh_host_rsa_key.pub
  12. 服务端有这么多对公私钥,是为了适配不同的客户端链接所准备的
  13. 目录下的 sshd_config 是ssh服务端的配置文件
  14. ssh_config 是ssh 客户端的配置文件
  15. Linux一般是自带ssh 客户端以及服务器端的。Windows啥都不带
  16. Linux服务器至少要有一对公私钥,ssh才能链接。
  17. # 在服务端通过查看私钥生成的秘钥值,当客户端链接服务器端的时候,就可以凭借这个秘钥值来确定客户端链接的服务端就是可信任的。而不是被黑客所篡改的服务器Ip地址。
  18. [root@SSHServer ~]# ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key
  19. 256 SHA256:0yrLcZOy3R0VfHEiClKUjfZvEMrImQChS1rJunoRBU8 /etc/ssh/ssh_host_ecdsa_key.pub (ECDSA)
复制代码
  1. 当你通过秘钥对链接后,会在客户端的家目录~/.ssh/下出现一个kown_hosts文件
  2. [root@SSHCilent ~]# ll ~/.ssh/
  3. 总用量 4
  4. -rw-r--r--. 1 root root 177 8月   1 19:23 known_hosts
  5. 这个文件就是公钥
  6. 这个就是你拿到的服务器端分配给客户端所使用的加密私钥的公钥。
复制代码
  1. 在生产环境可能会有多态servers,我们难免每次都需要指纹认证,所以,可以使用一个参数不再指定指纹登录。
  2. # 假设此时我们删掉 这个known_hosts文件,那么如之前所理解,当我们ssh的时候,还是得需要输入yes,
  3. 但是当我们加上 -o StrictHostKeyChecking=no 参数后,就不需要输入指纹验证了,客户端默认完全信任服务器端,这个在生产环境中
  4. 用的很多。
  5. 但是这并不意味着,客户端没有公钥了,你再去ssh目录下看,还是会看到kown_hosts文件,里面还是有服务器端发过来的公钥。
  6. [root@SSHCilent ~]# rm -rf ~/.ssh/known_hosts
  7. [root@SSHCilent ~]# ssh -o StrictHostKeyChecking=no 192.168.190.135
  8. Warning: Permanently added '192.168.190.135' (ECDSA) to the list of known hosts.
  9. root@192.168.190.135's password:
复制代码
  1. 当然,虽然不用输入yes了。但是还是需要输入密码,这就涉及到了客户端免密登录
复制代码
ssh实现免密登录

  1. 1. 首先,服务器端的ssh的服务器配置文件里有#PubkeyAuthentication yes 参数,默认是需要公钥认证的,
  2. 我们可以不适用密码认证,来直接使用公钥认证的方式就可以实现免密登录,
  3. 当我们将yes 改为No的时候,就说明我们实现了客户端到服务器端的免密登录
复制代码
基于公钥的认证方式

  1. # 免密登录只是基于公钥认证的一个附带属性,基于公钥方式的认证方式更安全
  2. 1.首先要将客户端的公钥上传到服务器
  3.         1.1 在客户端上通过ssh-keygen命令生成非对称加密秘钥
  4.         [root@SSHCilent ~]# ssh-keygen
  5. Generating public/private rsa key pair.
  6. Enter file in which to save the key (/root/.ssh/id_rsa):  # 密钥对存放目录
  7. Enter passphrase (empty for no passphrase):  # 私钥的密码,可以设置为空
  8. Enter same passphrase again:
  9. Your identification has been saved in /root/.ssh/id_rsa.
  10. Your public key has been saved in /root/.ssh/id_rsa.pub.
  11. The key fingerprint is:
  12. SHA256:iCDvofEJmCSIkeXll4or5YEoXR/60XIsk9/YBUNl6ns root@SSHCilent
  13. The key's randomart image is:
  14. +---[RSA 3072]----+
  15. |.o. .     ..o    |
  16. |+o o   . . o     |
  17. |=.o o +   +      |
  18. |=* + * * . o     |
  19. |O B + O S . .    |
  20. |.O = . B + o     |
  21. |o *   . o + E    |
  22. | .         .     |
  23. |                 |
  24. +----[SHA256]-----+
  25.        
  26. [root@SSHCilent ~]# ls .ssh/
  27. id_rsa  id_rsa.pub  known_hosts
  28.        
  29. 2.客户端访问服务器端的时候,采用基于公钥的认证方式就可以了
  30.         2.1 上传公钥到服务器,(上传到哪里呢?服务器的ssh配置文件里有指定路径)
  31.         AuthorizedKeysFile      .ssh/authorized_keys
  32.         上面这个参数就指定了客户端的公钥存放在服务器端的位置
  33.         [root@SSHServer ~]# pwd
  34.         /root
  35.         [root@SSHServer ~]# mkdir .ssh
  36.         [root@SSHServer ~]# cd .ssh/
  37.         [root@SSHServer .ssh]# touch authorized_keys
  38.         [root@SSHServer .ssh]# ls
  39.         authorized_keys
  40.        
  41. # 将客户端的秘钥传上去。
  42. [root@SSHCilent .ssh]# cat id_rsa.pub
  43. ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQD049kl6fFMRUGhXtlFIeNP1FXsJitAWuEOw5bNBRnCDAhkTr+OTbzcMEvc1fXDV3OIfKEQ2rS/Hmbd2XBsJV6Aw+k3lyIm0HBDvi6b2vHVrb0tFrpJcCtVr7lcKnkW0wu/9tkFht6rsHt35YDRUFQBQYmNu3IGB9FIgPCi74yuyvT1r+QrXK7PlmEL1NQEYLVL1dcO02OCv9CRmqzIfDokYMnPvjkYva64smh3HqlzS9FCEn9vnODiOG6HAy7WqXb4bg5+VOaoy2yngZUQoN+uA4iZRYtA5XEyZ4hBt1DFfqe7+ikF7r9ghJRWaH2/y262LzZEi7H/XF3tT0KRgTzTyJmc8KkLPxUqVRFv7Px2mep9OueamVdGi/wYwGD0Nec1fO7vp1wmBmIMBc+cchHpimsdQmpsC5npX0xOfEt/moVOBbeSqtI0ZlR49Lbj+21O7TFPGXjVeIm0xecM1fKUOv4ilJeoKmaXM4WyRxs+UIzuBkd61WBllh0xoLphXd0= root@SSHCilent
  44. 怎么传:
  45. 1.直接复制粘贴到服务端的authorized_keys文件里(很原始,不建议这样做)
  46. 2. 利用ssh-copy-id 上传(推荐)
  47. [root@SSHCilent .ssh]# ssh-copy-id admin@192.168.190.135
  48. 此时再次ssh 登录,即可实现免密登录
  49. [root@SSHCilent .ssh]# ssh admin@192.168.190.135  # 这里会输入一次密码,即admin的密码即可
  50. Activate the web console with: systemctl enable --now cockpit.socket
  51. Last login: Thu Aug  1 19:19:19 2024
  52. [admin@SSHServer ~]$
  53. # ssh可以远程执行命令
  54. [root@SSHCilent .ssh]# ssh admin@192.168.190.135 pwd
  55. /home/admin
  56. [root@SSHCilent .ssh]# ssh admin@192.168.190.135 ls
复制代码
ssh实用工具

  1. scp命令
  2. # 1.在客户端创建一个test 文件,将test文件上传到服务端
  3. # : 冒号分割路径
  4. [root@SSHCilent ~]# scp test root@192.168.190.135:~
  5. test                                                                                                     100%    0     0.0KB/s   00:00   
  6. # 在服务器端可以看到上传上去了
  7. [root@SSHServer ~]# ll  
  8. 总用量 16
  9. -rw-r--r--. 1 root root    0 8月   1 22:58 test
  10. # 2. 也可以将服务端的文件下发到客户端
  11. 在服务器端家目录创建一个test1测试文件
  12. 然后再客户端执行scp 命令
  13. [root@SSHCilent ~]# scp root@192.168.190.135:/root/test1 .
  14. test1                                                                                                    100%    0     0.0KB/s   00:00   
  15. [root@SSHCilent ~]# ll
  16. -rw-r--r--. 1 root root    0 8月   1 23:02 test1
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) Powered by Discuz! X3.4