在 KDE 中使用 ssh-agent?

Dan*_*inn 6 ssh kde ssh-agent

我以前曾经工作过一次,但由于某种原因它无法在我的新系统上工作。

我有.kde4/Autostart/一个名为 ssh-agent 的符号链接01-sshagent,然后是一个名为的简单脚本02-sshkeys,如下所示:

/usr/bin/ssh-add $(find $HOME/.ssh/keys -type f | egrep -v '\.pub$')
Run Code Online (Sandbox Code Playgroud)

问题似乎是,当我启动时,ssh-agent 运行正常,但 KDE 不会保留输出并将其存储在环境中,因此对于每个 Konsole 会话,我必须运行以ps查找 PID,然后手动类型:

SSH_AUTH_SOCK=/tmp/ssh-YtvdiEtW3065/agent.3065; export SSH_AUTH_SOCK;
SSH_AGENT_PID=<pidnumber>; export SSH_AGENT_PID;
Run Code Online (Sandbox Code Playgroud)

...只是为了让它工作,它确实...就在那个 Konsole 窗口中。

我尝试删除上述符号链接,并让 ssh 脚本看起来像这样:

/usr/bin/ssh-agent | sh
/usr/bin/ssh-add $(find $HOME/.ssh/keys -type f | egrep -v '\.pub$')
Run Code Online (Sandbox Code Playgroud)

但是,代理变量并不在会话中,并且从未提示我输入密钥的密码。

我显然错过了一些东西,但它是什么?

小智 9

这是一个老问题,可能值得更新答案。以下内容对我有用(Fedora 31 / KDE)。

  1. kdewallet使用默认钱包 ( ) 并使用与您的登录密码相同的密码设置 KWallet 。确保它在登录时解锁。Arch Wiki 有一些相关信息;就我而言,我必须取消注释中的一些行/etc/pam.d/sddm
  2. 创建您的 SSH 密钥(ssh-keygen )(因为您将使用密码管理器,所以它不需要记住)。
  3. 确保ssh-addksshaskpass已安装。
  4. 添加自动启动脚本,如下所示:
    $ cat $HOME/.config/autostart-scripts/ssh
    #!/bin/sh
    SSH_ASKPASS=/usr/bin/ksshaskpass ssh-add </dev/null
    
    Run Code Online (Sandbox Code Playgroud) 执行chmod +x并运行一次。Ksshaskpass 应该询问您的 SSH 密码。告诉它记住密码(这使用 KWallet)。再次运行并注意这次它没有询问。

应该是这样。


小智 4

我的简单解决方案是只运行一个 ssh-agent 并始终保持其运行。如果您确实愿意,可以在注销时将其杀死。关键是只使用固定插座。将 ssh-agent -a /tmp/$USER.agent 添加到自动启动脚本中。然后执行“export SSH_AUTH_SOCK=/tmp/$USER.agent”,然后执行 ssh-add。此外,您可以将该导出添加到 .bashrc、.profile 或其他 shell 登录脚本中,并且即使使用远程 ssh 也始终可以访问代理。