在bash脚本中运行ssh-agent

kub*_*uba 1 ssh bash

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

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

我正在运行它并输出:

Agent pid 1234
Identity added: ~/.ssh/id_rsa (~/.ssh/id_rsa)
Run Code Online (Sandbox Code Playgroud)

但是当我跑

ssh-add -l
Run Code Online (Sandbox Code Playgroud)

我越来越:

Could not open a connection to your authentication agent.
Run Code Online (Sandbox Code Playgroud)

我做错了什么以及如何解决这个问题?

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

Tec*_*ext 5

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在脚本之后运行它,ssh和ssh-add都不会看到设置了SSH_AUTH_SOCK环境变量.因此,从脚本运行所有命令或从命令提示符运行所有命令.

  • 感谢谢谢提示,这指向了正确的方向,现在我知道我需要使用"source"命令运行我的脚本:"source ./ssh-start.sh"(或使用"."而不是"source"来制作它更短). (4认同)