为了提高安全性,我想以不同的用户身份运行keychain
代理。这将阻止劫持我的系统的用户获得实际的私钥,同时保持使用它来验证ssh
和scp
连接的能力。
我尝试了什么?
我创建了一个名为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.
任何提示?
答案 0 :(得分:2)
keychain
似乎使用已经正在运行的ssh-agent
或gpg-agent
,并在需要时启动。
ssh-agent
检查正在运行的进程的用户标识是否与通过unix域套接字连接的用户的id匹配(root除外)。如果在调试模式下运行代理,您将看到相应的错误消息。在这种情况下,套接字会立即关闭,因此您将收到上面提到的错误消息 - 您可能正在使用系统上的ssh-agent
。这意味着使用ssh-agent
无法实现您的尝试(除非您不对其进行修改)。
如果您使用gpg-agent
--enable-ssh-support
选项替代ssh-agent
,它应该有效,但您应该知道此设置并不能真正提高安全性。使用您尝试设置的权限,它将允许具有套接字访问权限的每个用户在您解锁后使用添加的密钥进行身份验证,因此实际上不太安全。