我正在尝试向我的 sshagent 添加私钥。运行命令
$ eval "$(ssh-agent -s)"
$ ssh-add ~/.ssh/id_rsa_personal
Run Code Online (Sandbox Code Playgroud)
工作做得很好,所以当我运行时ssh-add -l
,我看到密钥已被添加。即使根本不运行该命令也是如此eval
(这可能引出了为什么我需要运行它的问题)。但是,如果我创建一个可执行文件add_key.sh
(使用 shebang 和chmod +x
)并向其中添加这些确切的命令然后运行它,则ssh-add -l
不会显示密钥而是显示"The agent has no identities"
。
如果我注释掉eval
脚本中的命令并运行它,就没有问题,并且它会正确地将密钥添加到代理中。我的脚本是什么导致添加密钥失败,为什么如果我从脚本中ssh-add
注释掉命令或只是手动运行命令,这不是问题?eval
ssh-agent -s
开始一个新的代理;当您eval
输出它时,您可以更改 shell 环境,以便以下内容ssh-add
将身份添加到该代理。
SSH_AUTH_SOCK
如果您在脚本中执行此操作,那么当您返回父环境时, /的新值SSH_AGENT_PID
将丢失,因此(尽管新代理仍在运行)ssh-add -l
无法连接到它。
当您在ssh-agent -s
没有 的情况 eval
下运行时,它会启动一个新代理,但仅将新环境打印到标准输出,因此ssh-add
将新标识添加到父环境中已运行的任何代理中。
归档时间: |
|
查看次数: |
250 次 |
最近记录: |