专栏首页不想当开发的产品不是好测试新机器下git clone代码新思路

新机器下git clone代码新思路

新机器下git clone代码新思路

背景

得到一台新的服务器,需要在这台机器上部署业务代码,常规做法就是

  1. 通过ssh-keygen生成密钥公钥
  2. 将公钥配置在gitlab上
  3. 通过git协议来clone代码

这三步骤中还涉及到首次访问gitlab,需要输入yes来确认,如下图:

如果不想人工干预,或者到时批量机器,后者docker中使用呢? 我个人之前的做法是引入expect命令了,流程还是没有变动的,只是在出现交互需要的时候,可以自动输入对应的指令,今天在看同事的jenkins job的时候发现了一个更方便的方案

方案

  1. 通过ssh-keyscan获取server的公钥,然后提前写入到known_hosts中,避免了首次访问server的确认
  2. 通过copy已经配置好的公钥密钥直接写入到新机器中

实际操作如下:

sudo mkdir ./ssh
sudo touch ./ssh/known_hosts && sudo chmod 777 ./ssh/known_hosts
sudo ssh-keyscan -t rsa gitlab.xxxx.com > ./ssh/known_hosts
sudo cp $已经在gitlab配置的密钥 ./ssh/id_rsa

这里需要注意的是权限问题,当你的~/.ssh目录的权限过于随意的话,git clone会如下提示:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0666 for '/root/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/root/.ssh/id_rsa": bad permissions

所以要注意改变.ssh目录的权限,一般是设置为400权限,chmod -R 400 ~/.ssh 明显这种方式比我之前的方式高级多了

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • - Templates should only be responsible for mapping the state to the UI. Avoid placing tags with side

    vue.js报错如下: - Templates should only be responsible for mapping the state to the ...

    千往
  • jenkins 从git拉取代码

    步骤 jenkins已集成git插件(如无,请自行下载) 1. 去到源码管理栏,选中Git: ? 使用http协议去获取代码  Repository UR...

    千往
  • git命令中带有特殊符号如@

    使用带用户密码clone的方式: git clone https://username:password@remote 当username和password中含...

    千往
  • ssh password and passphrase

    ssh password and passphrase 1、ssh-keygen -t rsa     采用默认路径,输入passphrase。  2、scp ...

    joshua317
  • Ubuntu环境下ssh的安装和使用

    参考资料:https://blog.csdn.net/netwalk/article/details/12952051

    小黑鸭
  • 远程连接 Ubuntu19.1

    注意:如果你是和我一样下载安装的 Ubuntu19.1 镜像直接安装的可以跳过这一大步,直接去第二步。因为Ubuntu已经默认配置好了。

    wsuo
  • git使用双秘钥

    由于新项目需要两个github账号,然后一个git秘钥只能绑定一个号,所以特地写出教程,教你如何配置双秘钥

    huanhao
  • bash脚本中将密码传递给ssh/scp命令方法详解

    对于大多数最新的操作系统,sshpass软件包在默认软件包存储库中可用。可以使用以下命令在系统上安装它。

    砸漏
  • 查看linux ssh服务信息及运行状态方法

    关于ssh服务端配置有不少文章,例如 Linux下ssh服务配置,这里仅列举出一些查看ssh服务相关信息的常用命令.

    砸漏
  • 管理不同 git 系统的多个 ssh-key

    今天记录一下如何管理不同 git 系统下生成的 ssh-key。比如常用的 github 有一个 key,而公司搭建的 gitlab 又是一个不同邮箱生成的 k...

    Originalee

扫码关注云+社区

领取腾讯云代金券