我之前曾经工作过一次,但是由于某种原因,这不适用于我的新系统。
在.kde4/Autostart/我有一个符号链接到ssh-agent,名为01-sshagent ,然后是一个简单的脚本02-sshkeys ,看起来像这样:
/usr/bin/ssh-add $(find $HOME/.ssh/keys -type f | egrep -v '\.pub$')
问题似乎是,当我启动时,ssh-agent运行正常,但KDE不保留输出并将其存储在环境中,所以对于每个Konsole会话,我必须运行ps来查找PID,然后手动input:
SSH_AUTH_SOCK=/tmp/ssh-YtvdiEtW3065/agent.3065; export SSH_AUTH_SOCK; SSH_AGENT_PID=<pidnumber>; export SSH_AGENT_PID;
只是为了让它起作用,而且它只是在Konsole窗口中。
我试过删除前面提到的符号链接,只是提供了像这样的ssh脚本:
/usr/bin/ssh-agent | sh /usr/bin/ssh-add $(find $HOME/.ssh/keys -type f | egrep -v '\.pub$')
但是,代理variables仍然不在会话中,我也不会提示input密钥。
我明显错过了一些东西,但它是什么?
我简单的解决scheme是运行一个ssh代理,并始终保持运行。 如果你真的想注销,你可以注销它。 关键是只使用一个固定的sockets。 将ssh-agent -a /tmp/$USER.agent添加到自动启动脚本。 然后执行“export SSH_AUTH_SOCK = / tmp / $ USER.agent”,然后执行ssh-add。 另外,您可以将该导出添加到.bashrc,.profile或其他shelllogin脚本中,即使在使用远程ssh时也始终可以访问该代理。
根据我的观察报价“出于某种原因,它不适用于我的新系统”的立场:
在上述升级过程中,这种情况与我最喜欢的shell至less有两次相同 任何其他炮弹工作正常。 由于tcshstream行度低,这个问题的networking覆盖率太低。 所以,其中一个决定是迁移到zsh。 我这样做
我深入挖掘,发现明显的错误原因。 ssh-agent由命令启动
eval $(ssh-agent)
在新手上 /usr/share/upstart/sessions/ssh-agent.conf文件中。 首先,按照原样命令ssh-agent executad并生成类似于以下内容的输出:
setenv SSH_AUTH_SOCK /tmp/ssh-7AWho81toBZZ/agent.13776; setenv SSH_AGENT_PID 13783; echo Agent pid 13783;
其次,这个输出由eval执行,如果是csh我们可以看到:
/proc/self/fd/9: 1: eval: setenv: not found
在〜/ .cache / upstart / ssh-agent.log中。 这个错误是由于“SHELL看起来像csh风格”(见ssh-agent(1))。
所以,简短而详尽的回答是:
append -s选项到ssh-agent调用命令(/usr/share/upstart/sessions/ssh-agent.conf):
eval $(ssh-agent -s)
或者不要使用csh