Bash 脚本的 SSH(SSH 代理)

SSH for Bash Script (SSH-Agent)

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

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

#!/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 的新手,所以我也不确定这是否是正确的方法。

希望你能帮助我。谢谢!

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

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

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