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

问题描述 :在使用jenkins进行自动化部署时,其中一步是使用jenkins向目标服务器推送文件时,需要先在jenkins的系统配置中进行配置(事先安装好对应插件),配置远程服务器时,报错:

检查以后,发现用户名密码都没有错,但是测试连接是失败的;

问题分析 :我们的目的是使用用户名密码实现免登录,然后推送文件到远程服务器上的某个目录上(该目录一定要存在),只有用户名密码是不够的,还需要配置SSH公钥;
问题解决

公钥认证,是使用一对加密字符串,一个称为公钥(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 ,表示将公钥发给B,发到B服务器的~/.ssh目录下

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

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

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

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

复制代码
vi /etc/ssh/sshd_config

修改完后要重启sshd服务

复制代码
service sshd restart

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

参考博文:https://www.cnblogs.com/jager/p/5986563.html

相关推荐
AlfredZhao13 小时前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户97183563346619 小时前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪20 小时前
linux 拷贝文件或目录到指定的位置
linux
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush42 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
开发者联盟league2 天前
安装pnpm
ssh
载数而行5202 天前
Linux 11 动态监控指令top
linux
不会C语言的男孩2 天前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
古城小栈2 天前
Unix 与 Linux 异同小叙
linux·服务器·unix
凡人叶枫2 天前
Effective C++ 条款42:了解 typename 的双重意义
java·linux·服务器·c++