通过ssh建立两台主机的远程连接实现免密登陆

本文详细介绍了SSH的建立原理,包括版本协商、公钥交换和非对称加密等关键步骤,确保了远程连接的安全性。同时,通过配置两台主机的远程连接,演示了如何实现SSH免密登陆,包括生成密钥对、发送公钥到目标主机以及验证授权文件的过程,简化了用户登录流程。

一、ssh的建立原理
ssh远程连接

作用:远程端的主机基于网络通过标准的远程协议远程登录到对应的主机,类似于直接在本地端操作

应用层和传输层之间连接SSL/TLS安全认证层(SSL握手协议 SSL记录协议)

      身份伪装

      信息泄露

      信息改

对称密钥:
加密和解密用的同一密钥(安全性较低,执行效率较高)---数据传输

非对称密钥:
公钥--数据加密 私钥--数据解密(安全性较高,执行效率较低)---握手阶段

ssh连接的原理过程:
1.版本协商阶段:客户端向服务端发起TCP初始连接请求,客户端收到服务端的请求,建立连接,向客户端发送报文,客户端收到报文后,解析该数据包,决定使用谁的版本协议号;之后,客户端回应服务端决定使用的版本号,服务器比较客户端发送的版本号,决定是否一起工作,协商成功后进入密钥算法协商阶段,否则断开TCP连接 。

2.服务器传送公钥给客户端: 接收到客户端的要求后,服务器便将第一个步骤取得的公钥传送给客户端使用 (此时应是明码传送,反正公钥本来就是给大家使用的)。

3.客户端记录并比对服务器的公钥数据及随机计算自己的公私钥: 若客户端第一次连接到此服务器,则会将服务器的公钥记录到客户端的用户家目录内的 ~/.ssh/known_hosts 。若是已经记录过该服务器的公钥,则客户端会去比对此次接收到的与之前的记录是否有差异。若接受此公钥, 则开始计算客户端自己的公私钥。

4.回传客户端的公钥到服务器端: 用户将自己的公钥传送给服务器。此时服务器:具有服务器的私钥与客户端的公钥,而客户端则是: 具有服务器的公钥以及客户端自己的私钥,你会看到,在此次联机的服务器与客户端的密钥系统 (公钥+私钥) 并不一样,所以才称为非对称加密系统。

5.开始双向加解密: (1)服务器到客户端:服务器传送数据时,拿用户的公钥加密后送出。客户端接收后,用自己的私钥解密 (2)客户端到服务器:客户端传送数据时,拿服务器的公钥加密后送出。服务器接收后,用服务器的私钥解密,这样就能保证通信安全。

二、配置两台主机的远程连接实现免密登陆

主机A:192.168.114.138

主机B:192.168.114.147

第一步:生成密钥对

在A机下产生密钥:ssh-keygen -t RSA -b 4096,一直按enter 

检查是否产生密钥对:
   id_rsa 私钥

   id_rsa.pub 公钥

[root@dmll ~]# cd /root/.ssh/
[root@dmll .ssh]# ll
total 8
-rw-------. 1 root root 2590 Oct 15 04:43 id_rsa
-rw-r--r--. 1 root root  560 Oct 15 04:43 id_rsa.pub

第二步:发送公钥到要连接的另一个主机

[root@A .ssh]# ssh-copy-id -i 192.168.114.147

第三步:到主机B上查看是否产生authorized_keys的文件

### SSH三台服务器免密登录实验报告 #### 实验背景 在分布式系统、集群环境或自动化运维场景下,频繁的手动输入密码进行SSH连接不仅效率低下,而且容易出错。因此,配置SSH无密码登录可以极大地提高工作效率并简化操作流程。 本实验旨在通过设置三台Linux服务器之间的SSH互信(即无需每次手动输入密码即可完成远程登录),从而实现高效的自动化管理。 #### 环境准备 1. **操作系统**:所有机器均采用CentOS 7.x版本。 2. **网络拓扑结构** - Server A (IP: 192.168.0.1) - Server B (IP: 192.168.0.2) - Server C (IP: 192.168.0.3) 每个节点都已安装了`openssh-client` 和 `openssh-server` 并正常运行,并且能够相互访问对方的开放端口(默认为22)。 #### 步骤一:生成公钥对 首先,在Server A上创建一个新的RSA密钥对用于身份验证: ```bash ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_A ``` 这里我们指定了文件名为id_rsa_A以便于区分其他可能存在的私钥文件;同时设置了更大的位数以增强安全性(-b 参数)。 接下来将产生的公钥分发给另外两台服务端(Server B & Server C): ```bash cat ~/.ssh/id_rsa_A.pub | ssh user@serverB "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys" # 对于第三个服务器重复同样的过程... cat ~/.ssh/id_rsa_A.pub | ssh user@serverC "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys" ``` 注意替换上述命令中的"user"为您实际使用的用户名以及目标主机名/IP地址. #### 步骤二:测试连通性 回到Server A终端尝试直接通过ssh命令去链接Server B/C: ```bash ssh user@serverB # 如果成功则表示不需要再提供额外的信息如密码等信息. ssh user@serverC # 同样地检查与第三台电脑间的通信状况。 ``` 如果一切顺利的话,则证明已经实现了从A到BC两者的无缝接入;反之若失败需排查错误原因,比如权限问题或是防火墙阻止等情况。 为了保证双向互通,在Server B 和 Server C 上也应各自执行一次相同的步骤来交换它们各自的公钥至其余两个成员那里。(即将Server B 的 id_rsa_B 分别发送给 A&C ; 将Server C 的 id_rsa_C 发送给 A&B ) #### 结论 至此整个过程中涉及到的所有设备间均已建立起基于SSH协议的安全通道,可以在彼此之间自由穿梭而不再受限于繁琐的身份认证环节。这对于日常工作中需要频繁跨越多台物理机工作的工程师来说是非常有帮助的功能特性之一。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值