当前位置: 首页 > news >正文

Linux配置SSH公钥认证与Jenkins远程登录进行自动发布

  公钥认证,是使用一对加密字符串,一个称为公钥(public key), 任何人都可以看到其内容,用于加密;另一个称为密钥(private key),只有拥有者才能看到,用于解密。

在使用jenkins自动构建并远程登录服务器进行发布应用的时候,需要使用SSH公钥认证来解决登录服务器的问题。

  其实很简单,只需要两个指令即可。

ssh-keygen -t rsa -P ''
ssh-copy-id -i ~/.ssh/id_rsa.pub <IP>

  假设有两台服务器,A是Jenkins构建服务器,B是应用服务器,A构建好应用之后,将包传到B进行发布。

在A上面执行 ssh-keygen -t rsa -P '', -P后面两个单引号表示密码为空

之后会在~/.ssh目录下创建两个文件id_rsa(私钥),id_rsa.pub(公钥)

接下来继续在A上执行 ssh-copy-id -i ~/.ssh/id_rsa.pub <IP>,表示将公钥发给B,发到B服务器的~/.ssh目录下

之后在用ssh B<ip>尝试能否免密登录B服务器,如果还是提示需要输入密码,则有以下原因

a. 非root账户可能不支持ssh公钥认证(看服务器是否有限制)

b. 传过来的公钥文件权限不够,可以给这个文件授权下  chmod 644 authorized_keys

c. 使用root账户执行ssh-copy-id -i ~/.ssh/id_rsa.pub <IP> 这个指令的时候如果需要输入密码则要配置sshd_config 

vi /etc/ssh/sshd_config

修改完后要重启sshd服务

service sshd restart

最后,如果可以SSH IP 免密登录成功说明SSH公钥认证成功。

 

-------------------------------------------配置插曲 开始--------------------------------------------------

简单步骤总结(用非root用户):

1.       server1 上使用xxx用户 ,先清理之前的ssh登录记录,rm –rf ~/.ssh  运行ssh-keygen –t rsa(只需回车下一步即可,无需输入任何密码)。生成认证密钥。

2.       server1 上使用 ssh-copy-id xxx@server2_IP(需输入server2密码) , 即会将验证密钥copyserver2xxx/.ssh/authorized_keys

3.       server1 上使用 ssh xxx@server2_IP 。即可 免密码登录。

4.       相反,即可实现相互免密码登录。

如果最后还是不能实现免密登录,则可以看下 cat /var/log/secure,比如你xxx用户的家目录权限太高:

 

最后把家目录设置成700即可,注:目录权限调整可能影响应用程序,请谨慎操作

-------------------------------------------配置插曲 结束--------------------------------------------------

接下来进行jenkins的SSH配置,如下

 

 

 

1.       server1 上使用haieradmin用户 ,先清理之前的ssh登录记录,rm –rf ~/.ssh  运行ssh-keygen –t rsa(只需回车下一步即可,无需输入任何密码)。生成认证密钥。

2.       server1 上使用 ssh-copy-id haieradmin@server2_IP(需输入server2密码) , 即会将验证密钥copyserver2haieradmin/.ssh/authorized_keys

3.       server1 上使用 ssh haieradmin@server2_IP 。即可 免密码登录。

4.       相反,即可实现相互免密码登录。

转载于:https://www.cnblogs.com/jager/p/5986563.html

相关文章:

  • 日期格式 CST
  • Android重写getResources规避用户调整系统字体大小影响Android屏幕适配
  • Java.io.DataInputStream.readInt()
  • 第八课:通道抠图1(毛绒玩具)
  • Spring框架总结
  • linux命令:w、who、whoami、last、lastb、lastlog、basename、mail、hostname
  • 适用于web开发者和设计者的28款必备chrome浏览器插件
  • Hacker(三)之黑客定位目标---IP
  • DES ECB 模式 JAVA PHP C# 实现 加密 解密 兼容
  • 操作IFRAME及元素
  • Google发布用于Google Cloud的.Net API
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • Mercury:唯品会全链路应用监控系统解决方案详解(含 PPT)_软件设计_程序员_非百站新闻_跟谁学程序员官网...
  • 并发编程(四)——Java中的阻塞队列
  • java Callable与Future
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • [译] React v16.8: 含有Hooks的版本
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 【刷算法】求1+2+3+...+n
  • 2019.2.20 c++ 知识梳理
  • HTTP中的ETag在移动客户端的应用
  • Iterator 和 for...of 循环
  • Linux gpio口使用方法
  • mysql中InnoDB引擎中页的概念
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • nodejs调试方法
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • tensorflow学习笔记3——MNIST应用篇
  • uni-app项目数字滚动
  • 解决iview多表头动态更改列元素发生的错误
  • 前端js -- this指向总结。
  • 如何实现 font-size 的响应式
  • 深入浅出Node.js
  • 推荐一个React的管理后台框架
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 在Mac OS X上安装 Ruby运行环境
  • gunicorn工作原理
  • Linux权限管理(week1_day5)--技术流ken
  • 组复制官方翻译九、Group Replication Technical Details
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • #Linux(Source Insight安装及工程建立)
  • #ubuntu# #git# repository git config --global --add safe.directory
  • (003)SlickEdit Unity的补全
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (MATLAB)第五章-矩阵运算
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (vue)页面文件上传获取:action地址
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (三) diretfbrc详解
  • (十) 初识 Docker file