在KDE中使用ssh-agent?

我之前曾经工作过一次,但是由于某种原因,这不适用于我的新系统。

.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时也始终可以访问该代理。

根据我的观察报价“出于某种原因,它不适用于我的新系统”的立场:

  • 同时从Ubuntu 13.04升级到13.10(新的KDE版本4.11.5)
  • 与壳tcsh

在上述升级过程中,这种情况与我最喜欢的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