使用过 Jenkins 的同学都知道,Jenkins 会在远程服务器上执行一些命令,如:cd /home/wwwroot/ && git pull
,这时候就需要在 Jenkins 服务器上配置免密登录,以及在远程服务器上配置免密登录,这样才能实现 Jenkins 服务器和远程服务器之间的静默文件传输、执行脚本发版等操作。
要求实现: CentOS_168 向 CentOS_192 通过ssh免密登陆、scp传输文件
1). 生成秘钥
ssh-keygen
该命令一直按回车(Enter)即可,默认生成位置一般是:~/.ssh/
如果用户是非 root 一般位置是:/home/你的当前用户名/.ssh/
# 进入当前用户的根目录
cd ~
# 查看隐藏文件
ll -a
# or
ls -a
2). 进入该路径
cd ~/.ssh/
id_rsa.pub
找到 id_rsa.pub
这个文件,现将这个文件下载到本地
sz id_rsa.pub
1). 登陆服务器B,进入 /root/.ssh
目录,如果没有该目录,就创建一个
cd /root/.ssh
# or
mkdir /root/.ssh
2). 上传步骤2.2下载到本地的 id_rsa.pub
文件到服务器B的 /root/.ssh
目录下
rz
3). 在服务器B的 /root/.ssh
目录下创建一个 authorized_keys
文件
touch authorized_keys
此时该目录下应该有 id_rsa.pub
和 authorized_keys
两个文件
4). 将公钥文件 id_rsa.pub
追加到 authorized_keys
文件中
cat id_rsa.pub >> authorized_keys
注意: 尽量不要复制粘贴 id_rsa.pub
的内容,因为有可能会出现乱码,导致免密登录失败。建议使用 cat
命令追加到 authorized_keys
文件中。
登录服务器A,以下命令都是在服务器A中执行。
ssh root@2.2.2.2
# 新建一个测试文件
touch /root/test.txt
# 传输文件
scp /root/test.txt root@2.2.2.2:/root/test.txt
# 可以修改文件名
scp /root/test.txt root@2.2.2.2:/root/01.txt
ssh root@2.2.2.2 "nginx -t"
# 执行脚本
ssh root@2.2.2.2 "sh /root/01.sh"
欢迎访问:天问博客