linux通过SSH连接的SSH加密原理(笔记自用)

本文介绍了SSH协议的基本原理,包括对称加密和非对称加密的概念及其应用。详细解释了SSH连接过程中涉及的公钥验证流程及会话密钥的协商过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了理解SSH,先要介绍两个重要概念:对称加密非对称加密

对称加密

在对称加密中,客户端和服务端使用同一个密钥对数据进行加密和解密。这种方法的好处是加密强度高,很难破解。

缺点也很明显,即密钥本身容易被泄漏。因此,如何保存密钥成为了关键问题。于是引出了第二种加密方式:非对称加密。

非对称加密

在非对称加密中有两个密钥,公钥和私钥。

这两个密钥配对产生和使用。

用公钥加密的数据,必须用与其对应的私钥才能解开。

并且,私钥无法通过公钥获取。

因此,公钥是可以被公开的,而私钥则必须被安全存放。

在SSH中,非对称加密被用来在会话初始化阶段为通信双方进行会话密钥的协商。
由于非对称加密的计算量开销比较大,因此一旦双方的会话密钥协商完成,后续的加密都将采用对称加密来进行。

++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++
比如说 linux1 作为客户端 linux2 作为服务端 linux1 linux2 都有root用户 root用户进行linux1 和 linux2 的远程登录

  1. 客户端发起一个TCP连接,默认端口号为22.
  2. 服务端收到连接请求后,将自己的一些关键信息发给客户端。这些信息包括:
  • 服务端的公钥:客户端在收到这个公钥后,会在自己的“known_hosts”文件进行搜索。

  • 如果找到了相同的公钥,则说明此前连接过该服务器。

  • 如果没有找到,则会在终端上显示一段警告信息,由用户来决定是否继续连接。

[root@localhost sh]# ssh ip
The authenticity of host 'ip (ip)' can't be established.
ECDSA key fingerprint is SHA256:TnhaloWlcB8v9jJ7QSmeK0HaFBbgJ+gAEff639wf/jM.
ECDSA key fingerprint is MD5:d1:d7:59:ea:8b:df:7a:2b:49:1c:3f:05:7f:c2:49:b5.
Are you sure you want to continue connecting (yes/no)? 
  • 服务器所支持的加密算法列表:客户端根据此列表来决定采用哪种加密算法。
  1. 生成会话密钥。此时,客户端已经拥有了服务端的公钥。接下来,客户端和服务端需要协商出一个双方都认可的密钥,并以此来对双方后续的通信内容进行加密。
  2. 接下来,客户端将自己的公钥id发送给服务端,服务端需要对客户端的合法性进行验证:
1)服务端在自己的“authorized_keys”文件中搜索与客户端匹配的公钥。

2)如果找到了,服务端用这个公钥加密一个随机数,并把加密后的结果发送给客户端。

3)如果客户端持有正确的私钥,那么它就可以对消息进行解密从而获得这个随机数。

4)客户端由这个随机数和当前的会话密钥共同生成一个MD5值。

5)客户端把MD5值发给服务端。

6)服务端同样用会话密钥和原始的随机数计算MD5值,并与客户端发过来的值进行对比。如果相等,则验证通过。

至此,通信双方完成了加密信道的建立,可以开始正常的通信了。

总结:

SSH巧妙地利用了对称加密与非对称加密各自的特点,实现了一套安全保密的远程控制协议。

### 如何搭建自用的云端笔记本电脑开发环境 #### 选择合适的云服务提供商 为了构建一个高效的个人云端笔记本网盘开发环境,建议选择知名的云计算平台,例如阿里云、腾讯云或AWS。这些服务商提供了丰富的计算资源和服务支持,可以满足不同层次的需求。 #### 创建虚拟机实例 登录所选云服务平台后,在控制台创建一个新的ECS(弹性云服务器)实例或其他类型的计算节点作为工作空间的基础架构组件。确保分配足够的CPU核心数与内存容量给该机器以便流畅运行Jupyter Notebook等工具[^1]。 #### 安装必要的软件包 连接至新建立好的远程Linux主机之后执行如下操作来安装Python以及Anaconda发行版: ```bash sudo apt-get update && sudo apt-get install python3-pip -y pip3 install --upgrade pip wget https://repo.anaconda.com/archive/Anaconda3-2023.07-1-Linux-x86_64.sh bash Anaconda3-*.sh source ~/.bashrc ``` 完成上述步骤即可获得完整的科学计算生态体系的支持。 #### 配置安全访问权限 考虑到数据的安全性和隐私保护方面的要求,应当设置强效的身份验证机制。对于基于Web界面工作的应用程序来说,最简单有效的方法莫过于启用HTTPS协议并通过SSL证书加密通信链路;而对于命令行交互,则推荐使用SSH密钥对代替传统口令方式实现身份校验过程中的认证环节[^3]。 另外,如果打算长期保存敏感资料于在线存储介质之中的话,还应该考虑采取额外措施进一步增强保密等级——比如定期备份重要文档并将其转移至离线设备内妥善保管起来以防万一发生不可预见的风险事件造成损失扩大化趋势加剧等问题出现。 #### 启动 Jupyter Notebook 并设定密码保护 最后一步就是启动Jupyter Notebook并将它绑定到公网IP地址上使得可以从任何地方轻松接入此环境开展编程学习活动了。在此之前记得先按照官方指南说明配置好相应的防火墙规则允许外部请求进入指定端口号范围之内再继续往下走下一步骤: ```bash jupyter notebook --generate-config jupyter notebook password ``` 输入两次相同的新密码用于后续登陆验证用途,并确认已成功写入配置文件`~/.jupyter/jupyter_notebook_config.json`中[^2]。 ```python c.NotebookApp.ip = '0.0.0.0' c.NotebookApp.open_browser = False c.NotebookApp.port = 8888 ``` 将以上参数加入到`.jupyter/jupyter_notebook_config.py`里调整默认行为使之适应当前场景下的实际应用需求。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值