上一篇
图说jenkins pipeline处理前端项目--(2)安装依赖与打包 - 掘金 (juejin.cn)
前置条件:让jenkins所在主机能免密登录远程主机
- jenkins所在主机生成ssh密钥对(生成时设置密码对文件加密),再将公钥上传到远程主机
- jenkins所在主机生成的ssh私钥,加入ssh-agent(目的是自动化处理时,不会被要求再次输入密码)
在jenkins所在主机执行如下命令
生成ssh密钥对
输入如下命令后,会要求你:
-
确认密钥对文件生成的目录(默认在
~/.ssh/
文件夹) -
输入
密钥对文件
的保护密码(建议设置)ssh-keygen -t ed25519
此时会在~/.ssh/
文件夹,生成: id_ed25519 和 id_ed25519.pub 两个文件
id_ed25519
是私钥
id_ed25519.pub
是公钥
将ssh私钥加入ssh-agent
启动ssh-agent
bash
eval "$(ssh-agent -s)"
如果是新启动的
ssh-agent
服务(或者每次重启ssh-agent
服务),里面都是没有ssh私钥的
将ssh私钥加入ssh-agent
javascript
ssh-add ~/.ssh/id_ed25519
查看ssh-agent
中所有私钥
csharp
ssh-add -l
要删除已加载到ssh-agent中的特定私钥,可以使用ssh-add -d
命令,并提供私钥的文件路径。
javascript
ssh-add -d ~/.ssh/id_ed25519
如果你没有明确指定私钥文件路径,ssh-agent不会知道要移除哪个密钥。通常情况下,当你重启ssh-agent时,之前加载的所有密钥都会失效。
若想完全清除ssh-agent缓存并重新启动它,可以先杀掉现有的ssh-agent进程,然后重新启动 此时会让你输入一次密钥对创建时的那个密码
验证是否能免密登录远程主机
将打包结果上传远程主机
scp -r $WORKSPACE/dist root@myalpine2:/root/workspace/
说明
$WORKSPACE
是jenkins内部的环境变量,表示当前job的工作目录
$WORKSPACE/dist
是我要拷贝的目录
myalpine2
是我远程服务器的ip,因为我用的是docker,并创建了network,所以用的是这个
root
是我远程服务器的一个账号
/root/workspace/
是我要拷贝到目标目录
查看远程主机是否有该文件夹