我以前曾经工作过一次,但由于某种原因它无法在我的新系统上工作。
我有.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)。
kdewallet使用默认钱包 ( ) 并使用与您的登录密码相同的密码设置 KWallet 。确保它在登录时解锁。Arch Wiki 有一些相关信息;就我而言,我必须取消注释中的一些行/etc/pam.d/sddm。ssh-keygen )(因为您将使用密码管理器,所以它不需要记住)。ssh-add并ksshaskpass已安装。$ 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 也始终可以访问代理。
| 归档时间: |
|
| 查看次数: |
15511 次 |
| 最近记录: |