从另一个非root用户访问SSH_AUTH_SOCK

前端之家收集整理的这篇文章主要介绍了从另一个非root用户访问SSH_AUTH_SOCK前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
场景:

我在我的本地PC上运行ssh-agent,我的所有服务器/客户端都设置为转发SSH代理身份验证.我可以在我的本地PC上使用ssh-agent在我的所有机器之间跳转.这样可行.

我需要能够以自己(user1)的身份SSH到机器,更改为另一个名为user2的用户(sudo -i -u user2),然后使用我在本地PC上运行的ssh-agent ssh到另一个盒子.假设我想做类似ssh user3 @ machine2的事情(假设user3在authorized_keys文件中有我的公共SSH密钥).

我有sudo配置为保持SSH_AUTH_SOCK环境变量.

涉及的所有用户(用户[1-3])都是非特权用户(非root用户).

问题:

当我更改为另一个用户时,即使SSH_AUTH_SOCK变量设置正确,(假设其设置为:/tmp/ssh-HbKVFL7799/agent.13799)user2也无法访问user1创建的套接字 – 当然有意义,否则user2可能会劫持user1的私钥并以该用户的身份跳转.

如果不是通过sudo为user2获取shell,这种情况可以正常工作,我通过sudo for root获得一个shell.因为自然root可以访问机器上的所有文件.

问题是:

最好使用sudo,如何从user1更改为user2,但仍然可以访问user1的SSH_AUTH_SOCK?

解决方法

您需要做两件事:

>设置SSH_AUTH_SOCK变量,使其指向正确的文件
>允许其他用户连接到套接字(使用文件系统权限)

因此,你可以做的是:

作为user1,允许user2连接到套接字(完全访问套接字和进入目录的权限).我希望你的/ tmp允许ACL.

setfacl -m u:user2:rw $SSH_AUTH_SOCK
setfacl -m u:user2:x $(dirname $SSH_AUTH_SOCK)

切换到其他用户,并正确导出变量.

sudo -u user2 env SSH_AUTH_SOCK=$SSH_AUTH_SOCK ssh user3@machine2

如果要使用sudo打开交互式shell,则必须在获取shell后自行导出SSH_AUTH_SOCK变量.

猜你在找的Linux相关文章