centos+Jenkins+maven+gradle+分布式scp+无密码登录
这里先零散记录一下,后续逐渐再完整整理。
远程scp无密码登录
假设有两台服务器,A是Jenkins构建服务器,B是应用服务器,A构建好应用之后,将包传到B进行发布。
在A上面执行 ssh-keygen -t rsa -P '', -P后面两个单引号表示密码为空
ssh-keygen -t rsa -P '' ssh-copy-id -i ~/.ssh/id_rsa.pub <IP>
我的操作记录与部分截图:
[root@localhost ~]# ssh-keygen -t rsa -P ''
cp id_rsa.pub id_rsa.pub_201scm.pub
只直接执行时候会报错,如下:
[root@localhost .ssh]# ssh-copy-id -i ~/.ssh/id_rsa_201scm.pub 192.168.1.203 /usr/bin/ssh-copy-id: ERROR: failed to open ID file '/root/.ssh/id_rsa_201scm': 没有那个文件或目录 (to install the contents of '/root/.ssh/id_rsa_201scm.pub' anyway, look at the -f option) [root@localhost .ssh]# ssh-copy-id -i /root/.ssh/id_rsa_201scm.pub 192.168.1.203 /usr/bin/ssh-copy-id: ERROR: failed to open ID file '/root/.ssh/id_rsa_201scm': 没有那个文件或目录 (to install the contents of '/root/.ssh/id_rsa_201scm.pub' anyway, look at the -f option) [root@localhost .ssh]# ssh-copy-id -i /root/.ssh/id_rsa_201scm.pub 192.168.1.203 -f /usr/bin/ssh-copy-id: ERROR: failed to open ID file '/root/.ssh/id_rsa_201scm': 没有那个文件或目录 (to install the contents of '/root/.ssh/id_rsa_201scm.pub' anyway, look at the -f option)
经过提示和man一下,可以知道这里需要增加参数:
ssh-copy-id -f -i /root/.ssh/id_rsa_201scm.pub 192.168.1.203
执行之后,验证成功
可以参考:https://www.cnblogs.com/jager/p/5986563.html
另外一种方式
安装expect yum install expect 来安装expect
登录server去取code的脚本如下:
#!/usr/bin/expect -f #!/bin/bash #for downloading NMS release from git server! set timeout 30 set password "123456" cd ~ spawn git clone test@162.178.15.81:/home/git/NMS/.git -b release NMS expect "test@162.178.15.81's password:" send "123456" send "\r" interact
- 针对第二步的文件备份,使用cp 命令就可以啦
- 使用新Release的code取代前一版本的code,使用mv或者cp命令
- 针对第4步,使用sed,awk之类的命令即可
- 重启服务器,restart命令等
可以将每步写成单独的脚本,然后使用source 命令去调用各个脚本的执行。

赠人玫瑰
手留余香
我们曾如此渴望命运的波澜,到最后才发现:人生最曼妙的风景,竟是内心的淡定与从容……我们曾如此期盼外界的认可,到最后才知道:世界是自己的,与他人毫无关系!-杨绛先生
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?