我以前曾经使用过它,但由于某种原因,它在我的新系统上无法运行。
我.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)。
kdewallet
使用默认钱包 ( ) 和与登录密码相同的密码设置 KWallet 。确保它在登录时解锁。Arch Wiki 有一些相关信息;就我而言,我必须取消注释某些行/etc/pam.d/sddm
。- 使用您喜欢的任何密码创建您的 SSH 密钥(
ssh-keygen
)(因为您将使用密码管理器,所以它不需要容易记住)。 - 确保
ssh-add
和ksshaskpass
已安装。 - 添加自动启动脚本如下:
执行$ 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 上有效。
希望这可以帮助。