在SSH中使用bash脚本时,为Git输入私钥密码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在SSH中使用bash脚本时,为Git输入私钥密码相关的知识,希望对你有一定的参考价值。

这是我到目前为止在<<EOF中的代码,而ssh'ing到一个盒子里

mkdir ~/.ssh/
rm ~/.ssh/config
touch ~/.ssh/config
echo 'Host *******' >> ~/.ssh/config
echo '   StrictHostKeyChecking no' >> ~/.ssh/config

cp ~/gittoken ~/.ssh/id_rsa
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa

cd /root
git clone ***********
expect "assword:"
send "$git_token_passphrase
";
interact

我得到的错误是

Permission denied (publickey).
fatal: Could not read from remote repository.

我已经把我见过的多个不同的答案结合起来,我觉得这可能对我的情况有所帮助。

当我在盒子上手动运行它们时,我可以运行所有这些命令。所以我的猜测是,在通过脚本进行ssh时运行它们需要一些额外的步骤。此外,期望和发送不适用于我的系统,但我想我还是把它们放在那里,以表明我已经尝试过它们。

/bin/bash: line 105: expect: command not found
/bin/bash: line 106: send: command not found
/bin/bash: line 107: interact: command not found
答案

您可以使用sshpass来实现这一目标。

但是从现在开始,整个设置的安全性不在于知道密码的人的头脑中,而是与脚本中的安全性一样强 - 或者 - 如果你对一些持有密码的文件稍微松懈,你可能会以及通过运行从SSH密钥中删除密码保护

ssh-key -f ~/.ssh/id_rsa -p

并输入两次空密码。

以上是关于在SSH中使用bash脚本时,为Git输入私钥密码的主要内容,如果未能解决你的问题,请参考以下文章

git bash配置SSH远程连接阿里云ECS

测试 SSH 私钥密码(暴力破解)

在 bash 脚本中为 git 提供密码

windows环境下 生成git公钥和私钥

在 Bash 脚本中使用 Expect 为 SSH 命令提供密码

从 bash 脚本添加 ssh-add 并自动输入密码