• 配置不输入密码的SSH连接


    ===============================================

     2020/11/29_第1次修改                       ccb_warlock

     

    ===============================================

    最近构建了一次持续发布环境,其中需要通过ssh密钥配对来实现对另一台服务器的操作,我曾经在17年整理gitlab远程备份时整理了这块的内容,目前将这个内容单独抽出一篇整理,来关联后续的随笔。

     

    示例目标:jenkins服务器可以在不用输入用户名/密码,就可以连接builder服务器执行ssh命令和传输文件的功能。


    一、环境准备

    1. jenkins服务器(centos7,192.168.1.1)

    2. builder服务器(centos7,192.168.1.2)

     


    二、配置SSH密钥配对

    本次示例,jenkins服务器需要对builder服务器远程执行一些操作或者远程复制文件,但是都需要输入用户名/密码。

    为了解决这个问题,首先需要实现不需要密码的SSH登陆,SSH密钥配对就可以解决这个问题。

     

    2.1 生成密钥对

    1)在jenkins服务器上生成rsa证书

    ssh-keygen -t rsa

    1. 生成的过程中提示输入密钥对保存位置,直接回车,接受默认值就行了。

    2. 因为之前已经有/root/.ssh/id_rsa 文件存在,因此提示你是否覆盖,输入y表示覆盖 。

    3. 接着会提示输入一个密码,直接回车,让它空着。当然,也可以输入一个密码。

    4. 接着输入确认密码,输入完之后,回车密钥对就生成完了。

     

    这样,在/root/.ssh下生成id_rsa 和 id_rsa.pub 两个文件,其中公共密钥保存在 /root/.ssh/id_rsa.pub,私有密钥保存在/root/.ssh/id_rsa。

     

    2)jenkins服务器上cp生成rsa公钥

    在/root/.ssh下复制备份一份id_rsa.pub 命名为 id_rsa.pub.jenkins,以便拷贝到远程服务器B。

    cd /root/.ssh
    cp id_rsa.pub id_rsa.pub.jenkins

    2.2 生成rsa公钥上传到builder服务器

    先在builder服务器上创建目录/root/.ssh。

    mkdir -p /root/.ssh

    使用scp命令进行远程复制,将jenkins服务器生成的id_rsa.pub.jenkins文件拷贝到builder服务器的/root/.ssh目录下。

    scp /root/.ssh/id_rsa.pub.jenkins root@192.168.1.2:/root/.ssh/

    此时使用scp命令需要输入密码,当把下面的“2.3 密钥配对”执行后,以后jenkins服务器使用scp命令复制文件到builder服务器的话,就不需要输入密码了。

     

    2.3 密钥配对

    1)在builder服务器的/root/.ssh下创建authorized_keys文件

    touch /root/.ssh/authorized_keys

    2)通过 cat 命令 把id_rsa.pub.jenkins 追写到 authorized_keys 文件中

    cd /root/.ssh/
    cat id_rsa.pub.jenkins >> authorized_keys

    3)修改authorized_keys文件的权限

    chmod 400 authorized_keys

    PS. 如果设置为777,那么登录的时候,还是需要提供密码的。

     

    4)测试是否还需要输入密码

    接着来测试下jenkins服务器使用scp复制文件到builder服务器是否还要输入密码。

    scp /root/.ssh/id_rsa.pub.jenkins root@192.168.1.2:/root/.ssh/

    发现在2.3之前,由于没有设置ssh证书授权认证时,上传需要输入密码;2.3操作完后,由于授权认证,已经不需要输入密码了。

     

     

  • 相关阅读:
    MyBatis执行sql的整个流程
    Ftp传输:向linux服务器上传文件时“550 Permission denied.”错误问题解决
    SpringBoot框架:两个方法同时调用时父方法使内部方法的DataSource注解失效的解决办法
    SpringBoot框架:通过AOP和自定义注解完成druid连接池的动态数据源切换(三)
    SpringBoot框架:配置文件application.properties和application.yml的区别
    SpringBoot框架:'url' attribute is not specified and no embedded datasource could be configured问题处理
    bash脚本打印字符串一个空格的内容
    gethostbyname的线程安全
    算法工程师的职业规划
    理解Deep Link & URI Schemes & Universal Link & App Link
  • 原文地址:https://www.cnblogs.com/straycats/p/14058205.html
Copyright © 2020-2023  润新知