用于Bash脚本的SSH(SSH代理)

时间:2016-04-19 00:47:06

标签: linux bash ubuntu ssh bitbucket

不确定这是否是一个重复的问题,但我真的找不到解决问题的方法。

问题是我无法运行以下命令。

#!/bin/bash
SCRIPT1="cd /path/to/project;"
SCRIPT2="git pull;"
ssh "production" ${SCRIPT1} "ssh-agent /bin/bash; ssh-add ~/.ssh/my_bitbucket_key;" ${SCRIPT2}

仍然是bash和ssh的新手,所以我不确定这是否是正确的做法。

希望你能帮助我。谢谢!

1 个答案:

答案 0 :(得分:2)

您的脚本存在的问题是您正在ssh-agent开始运行bash的新实例。执行命令的Bash无权访问此代理。相反,你想要

ssh "production" "${SCRIPT1}
    eval \$(ssh-agent)
    ssh-add ~/.ssh/my_bitbucket_key
    ${SCRIPT2}"

eval之后的美元符号必须被转义,因为在启动ssh命令之前,未转义的美元符号将由本地shell评估。)