ssh-add 无法连接到 ssh-agent

ssh-add 无法连接到 ssh-agent

我知道那ssh-add是“前端” ssh-agent

ssh-agent在我的电脑上已经运行了(我可以在 中找到它top)。当我输入 时ssh-add,它显示“无法打开与您的身份验证代理的连接”。

详细如何ssh-add沟通?ssh-agent

我的情况是

#! /bin/sh

# hello.sh

eval $(ssh-agent -s)
ssh-add

然后,

bash ./hello.sh

当我打字时

ssh-add some-new-key

在航站楼,

它输出该错误消息

答案1

的输出ssh-agent -s是一些环境变量分配,例如SSH_AUTH_SOCK=blahblah; export SSH_AUTH_SOCK等。当您运行时 eval $(ssh-agent -s),shell 将其作为代码执行,并且这些变量在该 shell 中设置。那里的变量包含ssh-add联系代理所需的信息,并且它们从 shell 继承到进程ssh-add

但在这里,您是从内部运行它hello.sh。运行脚本的 shell 是一个独立的进程,与启动的上层交互式 shell 不同hello.sh,并且变量不会“向上”继承。

source hello.sh相反,如果您使用、 或获取脚本. hello.sh,它会在相同的外壳,并且变量被正确分配。

不过,如果您正在运行多个 shell(多个终端模拟器、SSH 会话、screen/tmux 窗口等),那么您实际上只需要一个ssh-agent.您必须将变量分配保存到某个文件中,然后从例如加载它们.bashrc。但我不知道你到底在做什么。

相关内容