0

为了稍微提高安全性,我想以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的 eval'ing 中调用它。

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

$ ssh server
Error reading response length from authentication socket.

有什么提示吗?

4

1 回答 1

2

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

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

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

于 2012-12-04T01:18:16.080 回答