共计 2124 个字符,预计需要花费 6 分钟才能阅读完成。
公钥认证,是使用一对加密字符串,一个称为公钥 (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 密码), 即会将验证密钥 copy 至 server2(xxx/.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 密码), 即会将验证密钥 copy 至 server2(haieradmin/.ssh/authorized_keys)
3. server1 上使用 ssh haieradmin@server2_IP。即可 免密码登录。
4. 相反,即可实现相互免密码登录。
局域网内利用 GitLab+Jenkins 自动生成 GitBook 并发布 (Nginx) http://www.linuxidc.com/Linux/2016-05/131136.htm
Linux+Git+Maven+Jenkins+Neuxs 自动化编译环境搭建 http://www.linuxidc.com/Linux/2016-02/128652.htm
CentOS6 安装 Jenkins http://www.linuxidc.com/Linux/2016-05/131365.htm
使用 Jenkins 配置 Git+Maven 的自动化构建 http://www.linuxidc.com/Linux/2016-02/128641.htm
Jenkins+Maven+Git 搭建持续集成和自动化部署的配置手记 http://www.linuxidc.com/Linux/2015-06/118606.htm
Jenkins 的分布式构建及部署——节点 http://www.linuxidc.com/Linux/2015-05/116903.htm
Jenkins 的详细介绍 :请点这里
Jenkins 的下载地址 :请点这里
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-04/143059.htm