从另一个非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 – 为什么我的CentOS logrotate随机运行?
- LINUX实战:Linux rpm包管理详解
- linux – 使用logrotate的无限日志
- 杀死linux bash脚本中给定用户运行超过5分钟的所有进程
- LINUX实战:VMware Fusion DHCP方式下如何指定虚拟机IP地址
- 设置Linux教室环境的提示
- linux – awk,tail,sed或者其他 – 对于大文件哪一个更快?
- c – 为什么从/ dev / random读取几乎总是阻塞?
- linux – 突然大量文件系统损坏的原因? (“root inode不是
- linux – 管道stderr和stdout到不同的命令(不仅仅是文件)
