【问题标题】:Running ssh-agent in bash script在 bash 脚本中运行 ssh-agent
【发布时间】:2020-03-07 20:51:27
【问题描述】:

我创建了 ssh-start.sh 文件,其中包含:

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

我正在运行它并有输出:

Agent pid 1234
Identity added: ~/.ssh/id_rsa (~/.ssh/id_rsa)

但是当我跑步时

ssh-add -l

我明白了:

Could not open a connection to your authentication agent.

我做错了什么以及如何解决?

(当我直接在终端中从 ssh-start.sh 文件运行命令时,它工作正常)

【问题讨论】:

  • 最后一个命令,即ssh-add -l 是脚本的一部分,还是您在脚本运行后运行它?
  • 我在脚本运行后运行它。如果我将它添加到脚本中,它会显示我的身份,但 5 秒后从 shell 运行不会。

标签: bash ssh


【解决方案1】:

ssh 命令需要知道如何与ssh-agent 对话。他们从SSH_AUTH_SOCK 环境变量中知道这一点。

[gc@slave4 ~]$ ssh-agent -s
SSH_AUTH_SOCK=/tmp/ssh-ln4RuPajkE2A/agent.11091; export SSH_AUTH_SOCK;
SSH_AGENT_PID=11092; export SSH_AGENT_PID;
echo Agent pid 11092;

如果您在脚本之后运行ssh-add -l sshssh-add 都无法看到SSH_AUTH_SOCK 环境变量已设置。因此,将所有命令作为脚本的一部分运行或全部从命令提示符运行。

【讨论】:

  • 感谢感谢提示,这为我指明了正确的方向,现在我知道我需要使用“source”命令运行我的脚本:“source ./ssh-start.sh”(或使用“. " 而不是 "source" 以使其更短)。
  • 是的,在同一个 shell 中运行是您获取它还是将所有内容保留在脚本中的关键。我很高兴它有所帮助。 :)
  • @Technext 花了半天时间解决这个问题)非常感谢!
  • 很高兴它对您有所帮助。 :)
猜你喜欢
  • 2013-10-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-04
  • 2011-01-23
  • 2021-10-27
  • 2016-11-15
  • 2017-03-25
  • 2016-11-09
相关资源
最近更新 更多