我知道那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
。但我不知道你到底在做什么。