【DevOps】流水线任务中,实现虚拟机的自动部署功能


在触发部署流水线任务时执行一段 shell 脚本来自动部署免密配置。这个过程涉及到以下几个步骤:

在用户在前端页面输入目标服务器的地址、账号和密码后,后端接收这些信息。
后端执行一段脚本,以实现以下功能:
连接目标服务器。
在目标服务器上生成 SSH 密钥对(如果不存在)。
将生成的公钥添加到目标服务器用户的 ~/.ssh/authorized_keys 文件中。

一、目标服务器没有安装sshpass,自动化免密脚本

如果目标机器上没有安装 sshpass,依然可以实现 SSH 免密登录的配置,但需要稍作调整。没有 sshpass 的话,通常需要通过以下步骤使用 SSH 密钥对来配置免密登录,而不直接提供密码。

1. SSH 免密登录的基本概念

SSH 免密登录的本质是使用公钥认证,而不是每次都输入用户密码。可以在目标机器上手动执行一个命令行来完成公钥的设置,或者使用一个 script 来实现这个过程。以下是推荐的步骤:

2. 手动或自动化配置免密登录的步骤

如果无法使用 sshpass,可以通过以下方法进行 SSH 免密配置:

方法一:手动配置(适用于一次性操作)

  1. 在本地生成 SSH 密钥(如果还没有密钥):

    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    

    这将会在 ~/.ssh 目录下生成一对密钥(id_rsaid_rsa.pub)。如果唯一需要的是公钥,id_rsa.pub 即为所需的内容。

  2. 手动将公钥复制到目标服务器
    打开终端,使用以下命令,将生成的公钥(~/.ssh/id_rsa.pub)的内容复制到目标服务器用户的 ~/.ssh/authorized_keys 文件中。

    首先,从本地机器读取公钥:

    cat ~/.ssh/id_rsa.pub
    

    然后在目标服务器上运行以下命令(假设您可以通过密码 SSH 进入目标机器):

    ssh user@target_server
    mkdir -p ~/.ssh
    echo "粘贴您之前复制的公钥内容" >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
    chmod 700 ~/.ssh
    
  3. 测试 SSH 免密连接
    退出目标服务器后,可以测试 SSH 是否能正常工作:

    ssh user@target_server
    

方法二: 使用 SSH 免密配置的自动脚本

如果您希望在流水线中自动化,无需 sshpass,可以使用如下脚本实现:

#!/bin/bash

# 设置参数
TARGET_USER="$1"           
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿寻寻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值