解决git需要手动输入ssh密码的问题

前言

子工程数量太多, 挨个clone实在有些慢, 于是乎我写了一个自动化脚本, 如下:

1
2
3
4
5
# 循环添加子模块
for i in {5..10}; do

git submodule add -b master "git@github.com:xxx/xxx_p${i}.git"
done

可问题来了, 每拉取一个仓库都需要手动输入ssh密钥密码, 实在有些繁琐, 该如何解决呢?

解决方案

方案一

将密钥添加到ssh-agent中,执行以下指令:

1
ssh-add ~/.ssh/id_rsa

默认密钥名称为id_rsa, 如果你有自定义的名称, 进行对应修改即可

方案二

使用第三方工具, 这里以Mac为例, 使用sshpass工具来实现, 具体操作如下:

  1. 安装sshpass

    1
    brew install hudochenkov/sshpass/sshpass
  2. 修改自动化脚本

    在脚本中添加export SSHPASS代码, 如下:

    1
    2
    3
    4
    5
    6
    export SSHPASS="这里填ssh密码"
    # 循环添加子模块
    for i in {5..10}; do

    git submodule add -b master "git@github.com:xxx/xxx_p${i}.git"
    done

该方案由于是明文存储密码, 所以安全性自然差一些

方案三

在生成ssh密钥时, 不设置密码, 直接回车即可

也就是说单独生成一个无需密码的新ssh密钥来使用

使用自动化部署的时候, 我通常会这么干

本文为作者原创 转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

0%