在 KDE 中使用 ssh-agent?

在 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,然后手动输入:

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$')

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

我显然遗漏了一些东西,但那是什么呢?

答案1

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

答案2

这是一个老问题,可能需要更新答案。以下对我有用(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
    
    执行chmod +x并运行一次。Ksshaskpass 应该会询问您的 SSH 密码。告诉它记住密码(这使用 KWallet)。再次运行并注意这次它没有询问。

就应该这样。

答案3

根据我的观察,“由于某种原因,它无法在我的新系统上运行”这句话的含义是:

  • 从 Ubuntu 13.04 升级到 13.10(新 KDE 版本 4.11.5)
  • 使用 shell tcsh

我最喜欢的 shell 在上述升级过程中至少发生过两次这种情况。其他任何 shell 都可以正常工作。由于 tcsh 的普及度较低,这个问题在互联网上很少见。因此,其中一个决定是迁移到 zsh。我这样做了

我深入挖掘,发现了明显的错误原因。ssh-agent 通过命令启动

eval $(ssh-agent)

在文件 /usr/share/upstart/sessions/ssh-agent.conf 中暴发户。首先,按原样执行命令 ssh-agent 并产生类似以下内容的输出:

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))。

因此,简短而详尽回答是:

  • 将 -s 选项附加到 ssh-agent 调用命令(/usr/share/upstart/sessions/ssh-agent.conf):

    评估$(ssh-agent-s)

  • 或不使用韓軟體

答案4

这是一个老问题,但我还是来这里寻找解决方案。

我的发行版中至少存在的一个问题是,如果你使用 GDM(即 Gnome 的显示管理器),它根本不关心 KDE/Plasma,也不会采取任何措施来确保它及其所有配置实用程序能够正确启动。

对于 GDM 您至少要做的事情是确保包含 PAM 相关的设置。

您可以通过两种方式完成此操作。您可以同时安装两者并查看每组配置文件,比较缺少的内容,或者您​​可以尝试我所说的方法。如果情况发生变化,查看配置文件可能是未来最好的选择,但无论哪种方式,情况都应该相似。

您需要编辑的第一个文件是/etc/pam.d/gdm-autologin

在此文件中,你需要添加 1 行@include common-session

在 gnome key ring 行下添加此行。

session optional        pam_kwallet5.so auto_start

您需要编辑的下一个文件是/etc/pam.d/gdm-password

在此文件中,你需要添加 1 行@include common-auth

在 gnome key ring.so 行下添加此行。

auth   optional         pam_kwallet5.so

如果您使用 Plasma,这应该可以解决您的登录问题。

您可能只需以其他方式包含这些内容,但这对我在 Ubuntu 22.04 上有效。

希望这可以帮助。

相关内容