当前位置: 首页 > news >正文

ssh 非对称加密

ssh 非对称加密

ssh服务端的配置文件目录

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

ssh实现免密登录

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

基于公钥的认证方式

# 免密登录只是基于公钥认证的一个附带属性,基于公钥方式的认证方式更安全
1.首先要将客户端的公钥上传到服务器1.1 在客户端上通过ssh-keygen命令生成非对称加密秘钥[root@SSHCilent ~]# 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.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:iCDvofEJmCSIkeXll4or5YEoXR/60XIsk9/YBUNl6ns root@SSHCilent
The key's randomart image is:
+---[RSA 3072]----+
|.o. .     ..o    |
|+o o   . . o     |
|=.o o +   +      |
|=* + * * . o     |
|O B + O S . .    |
|.O = . B + o     |
|o *   . o + E    |
| .         .     |
|                 |
+----[SHA256]-----+[root@SSHCilent ~]# ls .ssh/
id_rsa  id_rsa.pub  known_hosts2.客户端访问服务器端的时候,采用基于公钥的认证方式就可以了2.1 上传公钥到服务器,(上传到哪里呢?服务器的ssh配置文件里有指定路径)AuthorizedKeysFile      .ssh/authorized_keys上面这个参数就指定了客户端的公钥存放在服务器端的位置[root@SSHServer ~]# pwd/root[root@SSHServer ~]# mkdir .ssh[root@SSHServer ~]# cd .ssh/[root@SSHServer .ssh]# touch authorized_keys[root@SSHServer .ssh]# lsauthorized_keys# 将客户端的秘钥传上去。
[root@SSHCilent .ssh]# cat id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQD049kl6fFMRUGhXtlFIeNP1FXsJitAWuEOw5bNBRnCDAhkTr+OTbzcMEvc1fXDV3OIfKEQ2rS/Hmbd2XBsJV6Aw+k3lyIm0HBDvi6b2vHVrb0tFrpJcCtVr7lcKnkW0wu/9tkFht6rsHt35YDRUFQBQYmNu3IGB9FIgPCi74yuyvT1r+QrXK7PlmEL1NQEYLVL1dcO02OCv9CRmqzIfDokYMnPvjkYva64smh3HqlzS9FCEn9vnODiOG6HAy7WqXb4bg5+VOaoy2yngZUQoN+uA4iZRYtA5XEyZ4hBt1DFfqe7+ikF7r9ghJRWaH2/y262LzZEi7H/XF3tT0KRgTzTyJmc8KkLPxUqVRFv7Px2mep9OueamVdGi/wYwGD0Nec1fO7vp1wmBmIMBc+cchHpimsdQmpsC5npX0xOfEt/moVOBbeSqtI0ZlR49Lbj+21O7TFPGXjVeIm0xecM1fKUOv4ilJeoKmaXM4WyRxs+UIzuBkd61WBllh0xoLphXd0= root@SSHCilent怎么传:
1.直接复制粘贴到服务端的authorized_keys文件里(很原始,不建议这样做)
2. 利用ssh-copy-id 上传(推荐)
[root@SSHCilent .ssh]# ssh-copy-id admin@192.168.190.135此时再次ssh 登录,即可实现免密登录
[root@SSHCilent .ssh]# ssh admin@192.168.190.135  # 这里会输入一次密码,即admin的密码即可
Activate the web console with: systemctl enable --now cockpit.socket
Last login: Thu Aug  1 19:19:19 2024
[admin@SSHServer ~]$ # ssh可以远程执行命令
[root@SSHCilent .ssh]# ssh admin@192.168.190.135 pwd
/home/admin
[root@SSHCilent .ssh]# ssh admin@192.168.190.135 ls

ssh实用工具

scp命令
# 1.在客户端创建一个test 文件,将test文件上传到服务端
# : 冒号分割路径
[root@SSHCilent ~]# scp test root@192.168.190.135:~
test                                                                                                     100%    0     0.0KB/s   00:00    # 在服务器端可以看到上传上去了
[root@SSHServer ~]# ll  
总用量 16
-rw-r--r--. 1 root root    0 81 22:58 test# 2. 也可以将服务端的文件下发到客户端
在服务器端家目录创建一个test1测试文件
然后再客户端执行scp 命令
[root@SSHCilent ~]# scp root@192.168.190.135:/root/test1 .
test1                                                                                                    100%    0     0.0KB/s   00:00    
[root@SSHCilent ~]# ll
-rw-r--r--. 1 root root    0 81 23:02 test1

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【动态规划】路径问题
  • C#中类和结构体的对比
  • Hive中分区(Partition)和分桶(Bucket)区别
  • MBA留学选校中Location的四大考量因素
  • 为呼叫中心创建 SOP 的 10 个好处
  • 优化网络接收缓存减少数据丢包
  • https执行过程,特点,作用
  • 基于深度学习的快速适应任务
  • HarmonyOS应用开发者基础认证,Next版本发布后最新题库
  • 【问题解决方案】npm install报错问题:npm ERR! - 多种解决方案,总有一种可以解决
  • MySQL:CTE 通用表达式
  • 洛克兄弟:E-Bike浪潮下的骑行配件10亿大卖独立站拆解丨出海笔记
  • Android 更换applicationId 后 微信没有回调
  • 【自动化测试工具详解】使用Selenium、JUnit等工具进行自动化测试
  • 漏洞挖掘 | edusrc记一次某中学小程序渗透测试
  • 2018一半小结一波
  • android 一些 utils
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • iOS编译提示和导航提示
  • JavaScript 基本功--面试宝典
  • JavaScript新鲜事·第5期
  • JavaScript中的对象个人分享
  • Java基本数据类型之Number
  • mongodb--安装和初步使用教程
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 记录:CentOS7.2配置LNMP环境记录
  • 前端代码风格自动化系列(二)之Commitlint
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • Android开发者必备:推荐一款助力开发的开源APP
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • $.proxy和$.extend
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (二)springcloud实战之config配置中心
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)iOS字体
  • (转载)Google Chrome调试JS
  • (自用)仿写程序
  • *上位机的定义
  • .Net 6.0 处理跨域的方式
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET Core 和 .NET Framework 中的 MEF2
  • .net6 core Worker Service项目,使用Exchange Web Services (EWS) 分页获取电子邮件收件箱列表,邮件信息字段
  • .NET6 开发一个检查某些状态持续多长时间的类
  • .NET是什么
  • .sh
  • @PreAuthorize注解
  • [ vulhub漏洞复现篇 ] Hadoop-yarn-RPC 未授权访问漏洞复现
  • [ 代码审计篇 ] 代码审计案例详解(一) SQL注入代码审计案例