以不同的用户身份运行钥匙串

时间:2012-12-03 20:53:08

标签: linux ssh

为了提高安全性,我想以不同的用户身份运行keychain代理。这将阻止劫持我的系统的用户获得实际的私钥,同时保持使用它来验证sshscp连接的能力。

我尝试了什么?

我创建了一个名为agent的用户,他应该存储私钥并运行ssh-agent进程。我创建了一个脚本文件来为套接字设置正确的权限:

#!/bin/sh
export EVAL=$(keychain --eval -q)
eval $EVAL
chmod 770 $(dirname $SSH_AUTH_SOCK) $(dirname $GPG_AGENT_INFO)
chmod 660 $SSH_AUTH_SOCK $(echo $GPG_AGENT_INFO | sed 's/:.*//')
echo $EVAL

.bashrc中调用一个,然后评估它。

但是当我现在通过ssh连接到服务器时,我得到了

$ ssh server
Error reading response length from authentication socket.

任何提示?

1 个答案:

答案 0 :(得分:2)

keychain似乎使用已经正在运行的ssh-agentgpg-agent,并在需要时启动。

ssh-agent检查正在运行的进程的用户标识是否与通过unix域套接字连接的用户的id匹配(root除外)。如果在调试模式下运行代理,您将看到相应的错误消息。在这种情况下,套接字会立即关闭,因此您将收到上面提到的错误消息 - 您可能正在使用系统上的ssh-agent。这意味着使用ssh-agent无法实现您的尝试(除非您不对其进行修改)。

如果您使用gpg-agent --enable-ssh-support选项替代ssh-agent,它应该有效,但您应该知道此设置并不能真正提高安全性。使用您尝试设置的权限,它将允许具有套接字访问权限的每个用户在您解锁后使用添加的密钥进行身份验证,因此实际上不太安全。